Run Language-Agnostic Conformance Rules
The @nx/powerpack-conformance
plugin allows Nx Powerpack users to write and apply rules for your entire workspace that help with consistency, maintainability, reliability and security. Powerpack is available for Nx version 19.8 and higher.
The conformance plugin allows you to encode your own organization's standards so that they can be enforced automatically. Conformance rules can also complement linting tools by enforcing that those tools are configured in the recommended way. The rules are written in TypeScript but can be applied to any language in the codebase or focus entirely on configuration files.
The plugin also provides the following pre-written rules:
- Enforce Project Boundaries: Similar to the Nx ESLint Enforce Module Boundaries rule, but enforces the boundaries on every project dependency, not just those created from TypeScript imports or
package.json
dependencies. - Ensure Owners: Require every project to have an owner defined for the
@nx/powerpack-owners
plugin
Setup
The @nx/powerpack-conformance
plugin requires an Nx Powerpack license to function. Activating Powerpack is a simple process.
Buy a Powerpack LicenseUnlock all the features of Nx
Then, add the Conformance plugin to your workspace.
Conformance
Configure Conformance Rules
Conformance rules are configured in the conformance
property of the nx.json
file. You can use the pre-defined rules or reference your own custom rule. See the plugin documentation for more details.
1{
2 "conformance": {
3 "rules": [
4 {
5 "rule": "@nx/powerpack-conformance/enforce-project-boundaries",
6 "options": {
7 "depConstraints": [
8 {
9 "sourceTag": "scope:shared",
10 "onlyDependOnProjectsWithTags": ["scope:shared"]
11 }
12 ]
13 }
14 },
15 {
16 "rule": "@nx/powerpack-conformance/ensure-owners",
17 "projects": ["!experimental-app"]
18 },
19 {
20 "rule": "./tools/local-conformance-rule.ts"
21 }
22 ]
23 }
24}
25
Enforce Rules with the nx conformance
and nx conformance:check
Commands
The @nx/powerpack-conformance
plugin enables the nx conformance
and nx conformance:check
commands which check all the configured rules. The difference is that nx conformance
will invoke any fix generators on a configured rule automatically, whereas nx conformance:check
will only check the current workspace state and show any violations.
Therefore, nx conformance
is intended to be run locally while working on a feature branch. nx conformance:check
should be added to the beginning of your CI process so that the conformance rules are enforced for every PR.
1- name: Enforce all conformance rules
2 run: npx nx conformance:check
3
If a valid Powerpack license is not available to the workspace (either locally or via Nx Cloud), the nx conformance
and nx conformance:check
commands will fail without checking any rules.
Taking things further with Nx Cloud Enterprise
Organizations on the Nx Cloud Enterprise plan can publish custom conformance rules to their Nx Cloud organization without the friction of a custom registry, and then configure the rules to apply to the workspaces in their organization automatically when nx-cloud conformance
or nx-cloud conformance:check
is run (note that the nx-cloud
CLI is used in this case in order to handle the authentication with Nx Cloud).
The Powerpack license will be applied automatically via Nx Cloud in all contexts, and so there is zero setup required for the end developer.
Simply add an appropriate invocation of the nx-cloud conformance:check
command to your CI process and all cloud configured rules will be applied and merged with any local rules:
1- name: Enforce all conformance rules
2 run: npx nx-cloud record -- npx nx-cloud conformance:check
3
Learn more about publishing and configuring conformance rules in Nx Cloud.