It would be helpful if we could filter the scopes provided by @commitlint/config-nx-scopes by project type (e.g. only load projects of type 'application')
Expected Behavior
Here's an example of how this could work (implementation below):
.commitlintrc.js:
const {
utils: { getProjects }
} = require('@commitlint/config-nx-scopes')
module.exports = {
rules: {
'scope-enum': async ctx => [
2,
'always',
[...(await getProjects(ctx, 'application'))] // ⬅ addition of projectType parameter
]
}
}
Affected packages
Possible Solution
Implementation of the above example:
@commitlint/config-nx-scopes/index.js:
const {Workspaces} = require('@nrwl/tao/src/shared/workspace');
module.exports = {
utils: {getProjects},
rules: {
'scope-enum': (ctx) =>
getProjects(ctx).then((packages) => [2, 'always', packages]),
},
};
function getProjects(context, projectType) {
return Promise.resolve()
.then(() => {
const ctx = context || {};
const cwd = ctx.cwd || process.cwd();
const ws = new Workspaces(cwd);
const workspace = ws.readWorkspaceConfiguration();
return Object.entries(workspace.projects || {}).map(
([name, project]) => ({
name,
...project,
})
);
})
.then((projects) => {
return projects
.filter((project) => projectType ? project.projectType === projectType : true)
.filter((project) => project.targets)
.map((project) => project.name)
.map((name) => (name.charAt(0) === '@' ? name.split('/')[1] : name));
});
}
Context
We have a lot of libraries in our Nx workspace. I don't see us gaining much in return for the burden of having so many options for scope at commit time.
It would be helpful if we could filter the scopes provided by @commitlint/config-nx-scopes by project type (e.g. only load projects of type 'application')
Expected Behavior
Here's an example of how this could work (implementation below):
.commitlintrc.js:
Affected packages
Possible Solution
Implementation of the above example:
@commitlint/config-nx-scopes/index.js:
Context
We have a lot of libraries in our Nx workspace. I don't see us gaining much in return for the burden of having so many options for scope at commit time.