@razorwind/nx 0.0.19 → 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 CHANGED
@@ -2,6 +2,22 @@
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
+
15
+ ## [0.0.20](https://github.com/storm-software/razorwind/releases/tag/nx%400.0.20) (08/05/2026)
16
+
17
+ ### Updated Dependencies
18
+
19
+ - Updated **core** to **v0.0.25**
20
+
5
21
  ## [0.0.19](https://github.com/storm-software/razorwind/releases/tag/nx%400.0.19) (08/05/2026)
6
22
 
7
23
  ### Updated Dependencies
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","names":[],"sources":["../../../src/generators/sync/generator.ts"],"mappings":";;;iBAuHsB,cAAc,MAAM,OAAO,QAAQ"}
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
- for (const project of Object.values(projectGraph.nodes)) {
106
- const projectRoot = project.data.root;
107
- const generateTarget = project.data.targets?.[targetName] ?? Object.values(project.data.targets ?? {}).find((target) => target.executor === "@razorwind/nx:generate");
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
- for (const project of Object.values(projectGraph.nodes)) {
77
- const projectRoot = project.data.root;
78
- const generateTarget = project.data.targets?.[targetName] ?? Object.values(project.data.targets ?? {}).find((target) => target.executor === "@razorwind/nx:generate");
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",
@@ -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.19",
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.67",
115
- "@razorwind/core": "^0.0.24",
116
- "@storm-software/workspace-tools": "^1.296.90",
117
- "@stryke/hash": "^0.13.53",
118
- "@stryke/path": "^0.29.26",
119
- "@stryke/string-format": "^0.17.41",
120
- "@stryke/type-checks": "^0.6.32",
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.586",
128
- "@powerlines/plugin-untyped": "^0.2.600",
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": "5282fc6de7d131e6b97d8df3921c08f1676ac874"
137
+ "gitHead": "506b6e31e696fe7dd6f4c78fec9c298ac7a4b603"
138
138
  }