@razorwind/nx 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/generators/sync/generator.d.ts.map +1 -1
- package/dist/generators/sync/generator.js +44 -21
- package/dist/generators/sync/generator.mjs +44 -21
- package/dist/generators/sync/schema.d.ts +8 -0
- package/dist/generators/sync/schema.json +6 -0
- package/docs/api/sync/schema.md +9 -0
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog for Razorwind - Nx
|
|
4
4
|
|
|
5
|
+
## [0.0.21](https://github.com/storm-software/razorwind/releases/tag/nx%400.0.21) (08/05/2026)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
- **nx:** Added `configFile` option to sync generator ([830dc18](https://github.com/storm-software/razorwind/commit/830dc18))
|
|
10
|
+
|
|
11
|
+
### Updated Dependencies
|
|
12
|
+
|
|
13
|
+
- Updated **core** to **v0.0.26**
|
|
14
|
+
|
|
5
15
|
## [0.0.20](https://github.com/storm-software/razorwind/releases/tag/nx%400.0.20) (08/05/2026)
|
|
6
16
|
|
|
7
17
|
### Updated Dependencies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","names":[],"sources":["../../../src/generators/sync/generator.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","names":[],"sources":["../../../src/generators/sync/generator.ts"],"mappings":";;;iBA0HsB,cAAc,MAAM,OAAO,QAAQ"}
|
|
@@ -58,8 +58,8 @@ const CONFIG_FILE_NAMES = c12.SUPPORTED_EXTENSIONS.flatMap((extension) => CONFIG
|
|
|
58
58
|
//#endregion
|
|
59
59
|
//#region src/generators/sync/generator.ts
|
|
60
60
|
const DEFAULT_OUT_OF_SYNC_MESSAGE = "Razorwind generated files are out of sync. Run `nx sync` to regenerate.";
|
|
61
|
-
function resolveConfigFileToken(configFile, projectRoot) {
|
|
62
|
-
return configFile.replaceAll("{projectRoot}", projectRoot);
|
|
61
|
+
function resolveConfigFileToken(configFile, workspaceRoot, projectRoot) {
|
|
62
|
+
return configFile.replaceAll("{workspaceRoot}", workspaceRoot).replaceAll("{projectRoot}", projectRoot);
|
|
63
63
|
}
|
|
64
64
|
function findDefaultConfigFile(tree, projectRoot) {
|
|
65
65
|
return CONFIG_FILE_NAMES.map((name) => (0, _nx_devkit.joinPathFragments)(projectRoot, name)).find((path) => tree.exists(path));
|
|
@@ -102,29 +102,52 @@ async function syncGenerator(tree) {
|
|
|
102
102
|
const projectGraph = await (0, _nx_devkit.createProjectGraphAsync)();
|
|
103
103
|
const outOfSyncDetails = [];
|
|
104
104
|
const processedConfigFiles = /* @__PURE__ */ new Set();
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
let configFile;
|
|
109
|
-
let mode = defaultMode;
|
|
110
|
-
let componentsPath;
|
|
111
|
-
let tokensPath;
|
|
112
|
-
if (generateTarget?.executor === "@razorwind/nx:generate") {
|
|
113
|
-
mode = generateTarget.configurations?.[generateTarget.defaultConfiguration ?? "production"]?.mode ?? generateTarget.options?.mode ?? defaultMode;
|
|
114
|
-
componentsPath = generateTarget.options?.componentsPath;
|
|
115
|
-
tokensPath = generateTarget.options?.tokensPath;
|
|
116
|
-
const configured = generateTarget.options?.configFile ? resolveConfigFileToken(generateTarget.options.configFile, projectRoot) : void 0;
|
|
117
|
-
configFile = configured && tree.exists(configured) ? configured : findDefaultConfigFile(tree, projectRoot);
|
|
118
|
-
} else configFile = findDefaultConfigFile(tree, projectRoot);
|
|
119
|
-
if (!configFile || processedConfigFiles.has(configFile)) continue;
|
|
120
|
-
processedConfigFiles.add(configFile);
|
|
105
|
+
if (generatorOptions.configFile) {
|
|
106
|
+
const configFile = resolveConfigFileToken(generatorOptions.configFile, tree.root, tree.root);
|
|
107
|
+
if (tree.exists(configFile)) processedConfigFiles.add(configFile);
|
|
121
108
|
const changed = await generateForProject(tree, {
|
|
122
109
|
configFile,
|
|
123
|
-
mode,
|
|
124
|
-
componentsPath,
|
|
125
|
-
tokensPath
|
|
110
|
+
mode: defaultMode,
|
|
111
|
+
componentsPath: void 0,
|
|
112
|
+
tokensPath: void 0
|
|
126
113
|
});
|
|
127
114
|
outOfSyncDetails.push(...changed);
|
|
115
|
+
} else {
|
|
116
|
+
const workspaceConfigFile = findDefaultConfigFile(tree, tree.root);
|
|
117
|
+
if (workspaceConfigFile && tree.exists(workspaceConfigFile)) {
|
|
118
|
+
processedConfigFiles.add(workspaceConfigFile);
|
|
119
|
+
const changed = await generateForProject(tree, {
|
|
120
|
+
configFile: workspaceConfigFile,
|
|
121
|
+
mode: defaultMode,
|
|
122
|
+
componentsPath: void 0,
|
|
123
|
+
tokensPath: void 0
|
|
124
|
+
});
|
|
125
|
+
outOfSyncDetails.push(...changed);
|
|
126
|
+
}
|
|
127
|
+
for (const project of Object.values(projectGraph.nodes)) {
|
|
128
|
+
const projectRoot = project.data.root;
|
|
129
|
+
const generateTarget = project.data.targets?.[targetName] ?? Object.values(project.data.targets ?? {}).find((target) => target.executor === "@razorwind/nx:generate");
|
|
130
|
+
let configFile;
|
|
131
|
+
let mode = defaultMode;
|
|
132
|
+
let componentsPath;
|
|
133
|
+
let tokensPath;
|
|
134
|
+
if (generateTarget?.executor === "@razorwind/nx:generate") {
|
|
135
|
+
mode = generateTarget.configurations?.[generateTarget.defaultConfiguration ?? "production"]?.mode ?? generateTarget.options?.mode ?? defaultMode;
|
|
136
|
+
componentsPath = generateTarget.options?.componentsPath;
|
|
137
|
+
tokensPath = generateTarget.options?.tokensPath;
|
|
138
|
+
const configured = generateTarget.options?.configFile ? resolveConfigFileToken(generateTarget.options.configFile, tree.root, projectRoot) : void 0;
|
|
139
|
+
configFile = configured && tree.exists(configured) ? configured : findDefaultConfigFile(tree, projectRoot);
|
|
140
|
+
} else configFile = findDefaultConfigFile(tree, projectRoot);
|
|
141
|
+
if (!configFile || processedConfigFiles.has(configFile)) continue;
|
|
142
|
+
processedConfigFiles.add(configFile);
|
|
143
|
+
const changed = await generateForProject(tree, {
|
|
144
|
+
configFile,
|
|
145
|
+
mode,
|
|
146
|
+
componentsPath,
|
|
147
|
+
tokensPath
|
|
148
|
+
});
|
|
149
|
+
outOfSyncDetails.push(...changed);
|
|
150
|
+
}
|
|
128
151
|
}
|
|
129
152
|
return {
|
|
130
153
|
outOfSyncMessage,
|
|
@@ -29,8 +29,8 @@ const CONFIG_FILE_NAMES = SUPPORTED_EXTENSIONS.flatMap((extension) => CONFIG_FIL
|
|
|
29
29
|
//#endregion
|
|
30
30
|
//#region src/generators/sync/generator.ts
|
|
31
31
|
const DEFAULT_OUT_OF_SYNC_MESSAGE = "Razorwind generated files are out of sync. Run `nx sync` to regenerate.";
|
|
32
|
-
function resolveConfigFileToken(configFile, projectRoot) {
|
|
33
|
-
return configFile.replaceAll("{projectRoot}", projectRoot);
|
|
32
|
+
function resolveConfigFileToken(configFile, workspaceRoot, projectRoot) {
|
|
33
|
+
return configFile.replaceAll("{workspaceRoot}", workspaceRoot).replaceAll("{projectRoot}", projectRoot);
|
|
34
34
|
}
|
|
35
35
|
function findDefaultConfigFile(tree, projectRoot) {
|
|
36
36
|
return CONFIG_FILE_NAMES.map((name) => joinPathFragments(projectRoot, name)).find((path) => tree.exists(path));
|
|
@@ -73,29 +73,52 @@ async function syncGenerator(tree) {
|
|
|
73
73
|
const projectGraph = await createProjectGraphAsync();
|
|
74
74
|
const outOfSyncDetails = [];
|
|
75
75
|
const processedConfigFiles = /* @__PURE__ */ new Set();
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
let configFile;
|
|
80
|
-
let mode = defaultMode;
|
|
81
|
-
let componentsPath;
|
|
82
|
-
let tokensPath;
|
|
83
|
-
if (generateTarget?.executor === "@razorwind/nx:generate") {
|
|
84
|
-
mode = generateTarget.configurations?.[generateTarget.defaultConfiguration ?? "production"]?.mode ?? generateTarget.options?.mode ?? defaultMode;
|
|
85
|
-
componentsPath = generateTarget.options?.componentsPath;
|
|
86
|
-
tokensPath = generateTarget.options?.tokensPath;
|
|
87
|
-
const configured = generateTarget.options?.configFile ? resolveConfigFileToken(generateTarget.options.configFile, projectRoot) : void 0;
|
|
88
|
-
configFile = configured && tree.exists(configured) ? configured : findDefaultConfigFile(tree, projectRoot);
|
|
89
|
-
} else configFile = findDefaultConfigFile(tree, projectRoot);
|
|
90
|
-
if (!configFile || processedConfigFiles.has(configFile)) continue;
|
|
91
|
-
processedConfigFiles.add(configFile);
|
|
76
|
+
if (generatorOptions.configFile) {
|
|
77
|
+
const configFile = resolveConfigFileToken(generatorOptions.configFile, tree.root, tree.root);
|
|
78
|
+
if (tree.exists(configFile)) processedConfigFiles.add(configFile);
|
|
92
79
|
const changed = await generateForProject(tree, {
|
|
93
80
|
configFile,
|
|
94
|
-
mode,
|
|
95
|
-
componentsPath,
|
|
96
|
-
tokensPath
|
|
81
|
+
mode: defaultMode,
|
|
82
|
+
componentsPath: void 0,
|
|
83
|
+
tokensPath: void 0
|
|
97
84
|
});
|
|
98
85
|
outOfSyncDetails.push(...changed);
|
|
86
|
+
} else {
|
|
87
|
+
const workspaceConfigFile = findDefaultConfigFile(tree, tree.root);
|
|
88
|
+
if (workspaceConfigFile && tree.exists(workspaceConfigFile)) {
|
|
89
|
+
processedConfigFiles.add(workspaceConfigFile);
|
|
90
|
+
const changed = await generateForProject(tree, {
|
|
91
|
+
configFile: workspaceConfigFile,
|
|
92
|
+
mode: defaultMode,
|
|
93
|
+
componentsPath: void 0,
|
|
94
|
+
tokensPath: void 0
|
|
95
|
+
});
|
|
96
|
+
outOfSyncDetails.push(...changed);
|
|
97
|
+
}
|
|
98
|
+
for (const project of Object.values(projectGraph.nodes)) {
|
|
99
|
+
const projectRoot = project.data.root;
|
|
100
|
+
const generateTarget = project.data.targets?.[targetName] ?? Object.values(project.data.targets ?? {}).find((target) => target.executor === "@razorwind/nx:generate");
|
|
101
|
+
let configFile;
|
|
102
|
+
let mode = defaultMode;
|
|
103
|
+
let componentsPath;
|
|
104
|
+
let tokensPath;
|
|
105
|
+
if (generateTarget?.executor === "@razorwind/nx:generate") {
|
|
106
|
+
mode = generateTarget.configurations?.[generateTarget.defaultConfiguration ?? "production"]?.mode ?? generateTarget.options?.mode ?? defaultMode;
|
|
107
|
+
componentsPath = generateTarget.options?.componentsPath;
|
|
108
|
+
tokensPath = generateTarget.options?.tokensPath;
|
|
109
|
+
const configured = generateTarget.options?.configFile ? resolveConfigFileToken(generateTarget.options.configFile, tree.root, projectRoot) : void 0;
|
|
110
|
+
configFile = configured && tree.exists(configured) ? configured : findDefaultConfigFile(tree, projectRoot);
|
|
111
|
+
} else configFile = findDefaultConfigFile(tree, projectRoot);
|
|
112
|
+
if (!configFile || processedConfigFiles.has(configFile)) continue;
|
|
113
|
+
processedConfigFiles.add(configFile);
|
|
114
|
+
const changed = await generateForProject(tree, {
|
|
115
|
+
configFile,
|
|
116
|
+
mode,
|
|
117
|
+
componentsPath,
|
|
118
|
+
tokensPath
|
|
119
|
+
});
|
|
120
|
+
outOfSyncDetails.push(...changed);
|
|
121
|
+
}
|
|
99
122
|
}
|
|
100
123
|
return {
|
|
101
124
|
outOfSyncMessage,
|
|
@@ -14,6 +14,14 @@ export interface SyncGeneratorSchema {
|
|
|
14
14
|
*/
|
|
15
15
|
mode?: string,
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Razorwind Config File
|
|
19
|
+
*
|
|
20
|
+
* The path to the Razorwind config file to use when running generate. If not provided, the default config file will be used.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
configFile?: string,
|
|
24
|
+
|
|
17
25
|
/**
|
|
18
26
|
* Target Name
|
|
19
27
|
*
|
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
"id": "#mode",
|
|
16
16
|
"default": "production"
|
|
17
17
|
},
|
|
18
|
+
"configFile": {
|
|
19
|
+
"title": "Razorwind Config File",
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "The path to the Razorwind config file to use when running generate. If not provided, the default config file will be used.",
|
|
22
|
+
"id": "#configFile"
|
|
23
|
+
},
|
|
18
24
|
"targetName": {
|
|
19
25
|
"title": "Target Name",
|
|
20
26
|
"type": "string",
|
package/docs/api/sync/schema.md
CHANGED
|
@@ -14,6 +14,15 @@
|
|
|
14
14
|
The mode to use when running Razorwind generate
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
## `configFile`
|
|
18
|
+
- **Type**: `string`
|
|
19
|
+
|
|
20
|
+
> Razorwind Config File
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
The path to the Razorwind config file to use when running generate. If not provided, the default config file will be used.
|
|
24
|
+
|
|
25
|
+
|
|
17
26
|
## `targetName`
|
|
18
27
|
- **Type**: `string`
|
|
19
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@razorwind/nx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "A Nx plugin to support Razorwind development in Nx monorepos.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "github",
|
|
@@ -111,21 +111,21 @@
|
|
|
111
111
|
"typings": "dist/index.d.ts",
|
|
112
112
|
"dependencies": {
|
|
113
113
|
"@nx/devkit": "23.1.0",
|
|
114
|
-
"@power-plant/core": "^0.0.
|
|
115
|
-
"@razorwind/core": "^0.0.
|
|
116
|
-
"@storm-software/workspace-tools": "^1.296.
|
|
117
|
-
"@stryke/hash": "^0.13.
|
|
118
|
-
"@stryke/path": "^0.29.
|
|
119
|
-
"@stryke/string-format": "^0.17.
|
|
120
|
-
"@stryke/type-checks": "^0.6.
|
|
114
|
+
"@power-plant/core": "^0.0.70",
|
|
115
|
+
"@razorwind/core": "^0.0.26",
|
|
116
|
+
"@storm-software/workspace-tools": "^1.296.92",
|
|
117
|
+
"@stryke/hash": "^0.13.56",
|
|
118
|
+
"@stryke/path": "^0.29.29",
|
|
119
|
+
"@stryke/string-format": "^0.17.44",
|
|
120
|
+
"@stryke/type-checks": "^0.6.35",
|
|
121
121
|
"c12": "^3.3.4",
|
|
122
122
|
"defu": "^6.1.7",
|
|
123
123
|
"jiti": "^2.7.0",
|
|
124
124
|
"untyped": "^2.0.0"
|
|
125
125
|
},
|
|
126
126
|
"devDependencies": {
|
|
127
|
-
"@powerlines/plugin-tsdown": "^0.1.
|
|
128
|
-
"@powerlines/plugin-untyped": "^0.2.
|
|
127
|
+
"@powerlines/plugin-tsdown": "^0.1.587",
|
|
128
|
+
"@powerlines/plugin-untyped": "^0.2.601",
|
|
129
129
|
"@types/node": "^25.9.5",
|
|
130
130
|
"eslint-flat-config-utils": "^3.2.0",
|
|
131
131
|
"jsonc-eslint-parser": "^3.1.0"
|
|
@@ -134,5 +134,5 @@
|
|
|
134
134
|
"publishConfig": { "access": "public" },
|
|
135
135
|
"executors": "./executors.json",
|
|
136
136
|
"generators": "./generators.json",
|
|
137
|
-
"gitHead": "
|
|
137
|
+
"gitHead": "506b6e31e696fe7dd6f4c78fec9c298ac7a4b603"
|
|
138
138
|
}
|