@razorwind/nx 0.0.20 → 0.0.22

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,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":";;;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,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.20",
3
+ "version": "0.0.22",
4
4
  "description": "A Nx plugin to support Razorwind development in Nx monorepos.",
5
5
  "repository": {
6
6
  "type": "github",
@@ -111,28 +111,28 @@
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.25",
116
- "@storm-software/workspace-tools": "^1.296.91",
117
- "@stryke/hash": "^0.13.55",
118
- "@stryke/path": "^0.29.28",
119
- "@stryke/string-format": "^0.17.43",
120
- "@stryke/type-checks": "^0.6.34",
114
+ "@power-plant/core": "^0.0.75",
115
+ "@razorwind/core": "0.0.27",
116
+ "@storm-software/workspace-tools": "^1.296.93",
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.589",
128
+ "@powerlines/plugin-untyped": "^0.2.602",
129
129
  "@types/node": "^25.9.5",
130
130
  "eslint-flat-config-utils": "^3.2.0",
131
- "jsonc-eslint-parser": "^3.1.0"
131
+ "jsonc-eslint-parser": "^3.2.0"
132
132
  },
133
133
  "peerDependencies": { "nx": ">=23.0.0" },
134
134
  "publishConfig": { "access": "public" },
135
135
  "executors": "./executors.json",
136
136
  "generators": "./generators.json",
137
- "gitHead": "4cac94d47388e7e4d0739cde32600845340eaba2"
137
+ "gitHead": "556f2499e0ef94c0463e86c2d8f9b42bbdb0bc08"
138
138
  }
@@ -1,38 +0,0 @@
1
-
2
- // Generated by powerlines
3
- // Do not edit this file directly
4
-
5
- export interface GenerateExecutorSchema {
6
- /**
7
- * The path to the configuration file
8
- *
9
- * @default "{projectRoot}/razorwind.config.ts"
10
- */
11
- configFile: string,
12
-
13
- /**
14
- * The mode to use
15
- *
16
- * @default "production"
17
- *
18
- * @enum development,production
19
- */
20
- mode: string,
21
-
22
- /**
23
- * The path to a directory containing component directories or files, or an array of paths
24
- *
25
- *
26
- * @oneOf [object Object],[object Object]
27
- */
28
- componentsPath?: string | string[],
29
-
30
- /**
31
- * The path to the tokens.json file, or an array of paths
32
- *
33
- *
34
- * @oneOf [object Object],[object Object]
35
- */
36
- tokensPath?: string | string[],
37
- }
38
-
@@ -1,61 +0,0 @@
1
- {
2
- "id": "#",
3
- "title": "Generate Executor",
4
- "description": "A type definition for the Powerlines - Generate executor schema",
5
- "required": [
6
- "configFile",
7
- "mode"
8
- ],
9
- "properties": {
10
- "configFile": {
11
- "type": "string",
12
- "description": "The path to the configuration file",
13
- "default": "{projectRoot}/razorwind.config.ts"
14
- },
15
- "mode": {
16
- "type": "string",
17
- "description": "The mode to use",
18
- "default": "production",
19
- "enum": [
20
- "development",
21
- "production"
22
- ]
23
- },
24
- "componentsPath": {
25
- "oneOf": [
26
- {
27
- "type": "string"
28
- },
29
- {
30
- "type": "array",
31
- "items": {
32
- "type": "string"
33
- }
34
- }
35
- ],
36
- "tsType": "string | string[]",
37
- "description": "The path to a directory containing component directories or files, or an array of paths"
38
- },
39
- "tokensPath": {
40
- "oneOf": [
41
- {
42
- "type": "string"
43
- },
44
- {
45
- "type": "array",
46
- "items": {
47
- "type": "string"
48
- }
49
- }
50
- ],
51
- "tsType": "string | string[]",
52
- "description": "The path to the tokens.json file, or an array of paths"
53
- }
54
- },
55
- "additionalProperties": false,
56
- "type": "object",
57
- "default": {
58
- "configFile": "{projectRoot}/razorwind.config.ts",
59
- "mode": "production"
60
- }
61
- }
@@ -1,36 +0,0 @@
1
-
2
- // Generated by powerlines
3
- // Do not edit this file directly
4
-
5
- export interface SyncGeneratorSchema {
6
- /**
7
- * Mode
8
- *
9
- * The mode to use when running Razorwind generate
10
- *
11
- * @default "production"
12
- *
13
- * @enum development,production
14
- */
15
- mode?: string,
16
-
17
- /**
18
- * Target Name
19
- *
20
- * The name of the target to use when running Razorwind generate
21
- *
22
- *
23
- * @$default generate
24
- */
25
- targetName?: string,
26
-
27
- /**
28
- * Out of Sync Message
29
- *
30
- * The message to display when Razorwind generated files are out of sync
31
- *
32
- * @default "Razorwind generated files are out of sync. Run `nx sync` to regenerate."
33
- */
34
- outOfSyncMessage?: string,
35
- }
36
-
@@ -1,38 +0,0 @@
1
- {
2
- "id": "#",
3
- "title": "Sync Generator",
4
- "description": "A type definition for the Razorwind - Sync generator's options",
5
- "required": [],
6
- "properties": {
7
- "mode": {
8
- "title": "Mode",
9
- "type": "string",
10
- "description": "The mode to use when running Razorwind generate",
11
- "enum": [
12
- "development",
13
- "production"
14
- ],
15
- "id": "#mode",
16
- "default": "production"
17
- },
18
- "targetName": {
19
- "title": "Target Name",
20
- "type": "string",
21
- "description": "The name of the target to use when running Razorwind generate",
22
- "$default": "generate",
23
- "id": "#targetName"
24
- },
25
- "outOfSyncMessage": {
26
- "title": "Out of Sync Message",
27
- "type": "string",
28
- "description": "The message to display when Razorwind generated files are out of sync",
29
- "id": "#outOfSyncMessage",
30
- "default": "Razorwind generated files are out of sync. Run `nx sync` to regenerate."
31
- }
32
- },
33
- "type": "object",
34
- "default": {
35
- "mode": "production",
36
- "outOfSyncMessage": "Razorwind generated files are out of sync. Run `nx sync` to regenerate."
37
- }
38
- }