@space-arch/nx-plugin-std 1.7.0
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/README.md +35 -0
- package/dist/generators/cfg/cfg-generator.d.ts +5 -0
- package/dist/generators/cfg/cfg-generator.d.ts.map +1 -0
- package/dist/generators/cfg/cfg-generator.js +21 -0
- package/dist/generators/cfg/files/cursor-rules/commit-rules.mdc.template +274 -0
- package/dist/generators/cfg/files/cursor-rules/core-rules.mdc.template +106 -0
- package/dist/generators/cfg/files/cursor-rules/drizzle-orm-rules.mdc.template +110 -0
- package/dist/generators/cfg/files/cursor-rules/rust-rules.mdc.template +65 -0
- package/dist/generators/cfg/files/cursor-rules/typescript-rules.mdc.template +73 -0
- package/dist/generators/cfg/files/lint/.prettierignore.template +7 -0
- package/dist/generators/cfg/files/lint/.prettierrc.template +32 -0
- package/dist/generators/cfg/files/lint/eslint.config.mjs.template +91 -0
- package/dist/generators/cfg/lib/initCursorRules.d.ts +3 -0
- package/dist/generators/cfg/lib/initCursorRules.d.ts.map +1 -0
- package/dist/generators/cfg/lib/initCursorRules.js +4 -0
- package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.d.ts +3 -0
- package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.d.ts.map +1 -0
- package/dist/generators/cfg/lib/initEslintAndPrettierConfigs.js +21 -0
- package/dist/generators/cfg/lib/versionMatch.d.ts +3 -0
- package/dist/generators/cfg/lib/versionMatch.d.ts.map +1 -0
- package/dist/generators/cfg/lib/versionMatch.js +25 -0
- package/dist/generators/cfg/lib/versionResolve.d.ts +10 -0
- package/dist/generators/cfg/lib/versionResolve.d.ts.map +1 -0
- package/dist/generators/cfg/lib/versionResolve.js +49 -0
- package/dist/generators/cfg/schema.d.ts +5 -0
- package/dist/generators/cfg/schema.json +33 -0
- package/dist/generators/mv/mv-generator.d.ts +5 -0
- package/dist/generators/mv/mv-generator.d.ts.map +1 -0
- package/dist/generators/mv/mv-generator.js +11 -0
- package/dist/generators/mv/schema.d.ts +4 -0
- package/dist/generators/mv/schema.json +24 -0
- package/dist/generators/pkg/__snapshots__/pkg-generator.spec.ts.snap +297 -0
- package/dist/generators/pkg/lib/tsPathsBased.d.ts +4 -0
- package/dist/generators/pkg/lib/tsPathsBased.d.ts.map +1 -0
- package/dist/generators/pkg/lib/tsPathsBased.js +54 -0
- package/dist/generators/pkg/lib/tsReferenceBased.d.ts +4 -0
- package/dist/generators/pkg/lib/tsReferenceBased.d.ts.map +1 -0
- package/dist/generators/pkg/lib/tsReferenceBased.js +62 -0
- package/dist/generators/pkg/lib/util/addLocalPackage.d.ts +20 -0
- package/dist/generators/pkg/lib/util/addLocalPackage.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/addLocalPackage.js +48 -0
- package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.d.ts +3 -0
- package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/addPublishInfoToPackageJson.js +33 -0
- package/dist/generators/pkg/lib/util/resolveViteConfigPath.d.ts +7 -0
- package/dist/generators/pkg/lib/util/resolveViteConfigPath.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/resolveViteConfigPath.js +13 -0
- package/dist/generators/pkg/lib/util/setJsTsOptions.d.ts +3 -0
- package/dist/generators/pkg/lib/util/setJsTsOptions.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/setJsTsOptions.js +16 -0
- package/dist/generators/pkg/lib/util/setNextTsOptions.d.ts +3 -0
- package/dist/generators/pkg/lib/util/setNextTsOptions.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/setNextTsOptions.js +13 -0
- package/dist/generators/pkg/lib/util/setReactTsOptions.d.ts +3 -0
- package/dist/generators/pkg/lib/util/setReactTsOptions.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/setReactTsOptions.js +64 -0
- package/dist/generators/pkg/lib/util/updateArrayProperty.d.ts +2 -0
- package/dist/generators/pkg/lib/util/updateArrayProperty.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/updateArrayProperty.js +4 -0
- package/dist/generators/pkg/lib/util/updateTsConfigLibJson.d.ts +3 -0
- package/dist/generators/pkg/lib/util/updateTsConfigLibJson.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/updateTsConfigLibJson.js +4 -0
- package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.d.ts +3 -0
- package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/updateTsConfigSpecJson.js +4 -0
- package/dist/generators/pkg/lib/util/updateViteBuildFormats.d.ts +8 -0
- package/dist/generators/pkg/lib/util/updateViteBuildFormats.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/updateViteBuildFormats.js +16 -0
- package/dist/generators/pkg/lib/util/updateVitestConfig.d.ts +4 -0
- package/dist/generators/pkg/lib/util/updateVitestConfig.d.ts.map +1 -0
- package/dist/generators/pkg/lib/util/updateVitestConfig.js +29 -0
- package/dist/generators/pkg/pkg-generator.d.ts +5 -0
- package/dist/generators/pkg/pkg-generator.d.ts.map +1 -0
- package/dist/generators/pkg/pkg-generator.js +19 -0
- package/dist/generators/pkg/schema.d.ts +8 -0
- package/dist/generators/pkg/schema.json +66 -0
- package/dist/generators/rm/rm-generator.d.ts +5 -0
- package/dist/generators/rm/rm-generator.d.ts.map +1 -0
- package/dist/generators/rm/rm-generator.js +19 -0
- package/dist/generators/rm/schema.d.ts +3 -0
- package/dist/generators/rm/schema.json +19 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/generators.json +24 -0
- package/package.json +90 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`ts-path-based non-publishable package > should generate expected vite.config.ts 1`] = `
|
|
4
|
+
"/// <reference types='vitest' />
|
|
5
|
+
import { defineConfig } from 'vite';
|
|
6
|
+
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
|
|
7
|
+
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
|
|
8
|
+
|
|
9
|
+
export default defineConfig(() => ({
|
|
10
|
+
root: import.meta.dirname,
|
|
11
|
+
cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
|
|
12
|
+
plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
|
|
13
|
+
// Uncomment this if you are using workers.
|
|
14
|
+
// worker: {
|
|
15
|
+
// plugins: () => [ nxViteTsPaths() ],
|
|
16
|
+
// },
|
|
17
|
+
test: {
|
|
18
|
+
passWithNoTests: true,
|
|
19
|
+
name: 'foo-bar-baz',
|
|
20
|
+
watch: false,
|
|
21
|
+
globals: true,
|
|
22
|
+
environment: 'node',
|
|
23
|
+
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
24
|
+
reporters: ['default'],
|
|
25
|
+
coverage: {
|
|
26
|
+
reportsDirectory: '../../../coverage/packages/foo/bar-baz',
|
|
27
|
+
provider: 'v8' as const,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}));
|
|
31
|
+
"
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
exports[`ts-path-based publishable package > should generate expected vite.config.ts 1`] = `
|
|
35
|
+
"/// <reference types='vitest' />
|
|
36
|
+
import { defineConfig } from 'vite';
|
|
37
|
+
import dts from 'vite-plugin-dts';
|
|
38
|
+
import * as path from 'path';
|
|
39
|
+
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
|
|
40
|
+
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
|
|
41
|
+
|
|
42
|
+
export default defineConfig(() => ({
|
|
43
|
+
root: import.meta.dirname,
|
|
44
|
+
cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
|
|
45
|
+
plugins: [
|
|
46
|
+
nxViteTsPaths(),
|
|
47
|
+
nxCopyAssetsPlugin(['*.md']),
|
|
48
|
+
dts({
|
|
49
|
+
entryRoot: 'src',
|
|
50
|
+
tsconfigPath: path.join(import.meta.dirname, 'tsconfig.lib.json'),
|
|
51
|
+
pathsToAliases: false,
|
|
52
|
+
}),
|
|
53
|
+
],
|
|
54
|
+
// Uncomment this if you are using workers.
|
|
55
|
+
// worker: {
|
|
56
|
+
// plugins: () => [ nxViteTsPaths() ],
|
|
57
|
+
// },
|
|
58
|
+
// Configuration for building your library.
|
|
59
|
+
// See: https://vite.dev/guide/build.html#library-mode
|
|
60
|
+
build: {
|
|
61
|
+
outDir: '../../../dist/packages/foo/bar-baz',
|
|
62
|
+
emptyOutDir: true,
|
|
63
|
+
reportCompressedSize: true,
|
|
64
|
+
commonjsOptions: {
|
|
65
|
+
transformMixedEsModules: true,
|
|
66
|
+
},
|
|
67
|
+
lib: {
|
|
68
|
+
// Could also be a dictionary or array of multiple entry points.
|
|
69
|
+
entry: 'src/index.ts',
|
|
70
|
+
name: 'foo-bar-baz',
|
|
71
|
+
fileName: 'index',
|
|
72
|
+
// Change this to the formats you want to support.
|
|
73
|
+
// Don't forget to update your package.json as well.
|
|
74
|
+
formats: ['es' as const, 'cjs' as const],
|
|
75
|
+
},
|
|
76
|
+
rollupOptions: {
|
|
77
|
+
// External packages that should not be bundled into your library.
|
|
78
|
+
external: [],
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
test: {
|
|
82
|
+
passWithNoTests: true,
|
|
83
|
+
name: 'foo-bar-baz',
|
|
84
|
+
watch: false,
|
|
85
|
+
globals: true,
|
|
86
|
+
environment: 'node',
|
|
87
|
+
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
88
|
+
reporters: ['default'],
|
|
89
|
+
coverage: {
|
|
90
|
+
reportsDirectory: '../../../coverage/packages/foo/bar-baz',
|
|
91
|
+
provider: 'v8' as const,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
}));
|
|
95
|
+
"
|
|
96
|
+
`;
|
|
97
|
+
|
|
98
|
+
exports[`ts-reference-based not publishable package > should generate expected package.json 1`] = `
|
|
99
|
+
"{
|
|
100
|
+
"name": "@ns/foo-bar-baz",
|
|
101
|
+
"version": "0.0.1",
|
|
102
|
+
"private": true,
|
|
103
|
+
"type": "module",
|
|
104
|
+
"main": "./src/index.ts",
|
|
105
|
+
"types": "./src/index.ts",
|
|
106
|
+
"exports": {
|
|
107
|
+
".": {
|
|
108
|
+
"types": "./src/index.ts",
|
|
109
|
+
"import": "./src/index.ts",
|
|
110
|
+
"default": "./src/index.ts"
|
|
111
|
+
},
|
|
112
|
+
"./package.json": "./package.json"
|
|
113
|
+
},
|
|
114
|
+
"nx": {
|
|
115
|
+
"name": "foo-bar-baz",
|
|
116
|
+
"targets": {
|
|
117
|
+
"lint": {
|
|
118
|
+
"executor": "@nx/eslint:lint"
|
|
119
|
+
},
|
|
120
|
+
"test": {
|
|
121
|
+
"executor": "@nx/vitest:test",
|
|
122
|
+
"outputs": [
|
|
123
|
+
"{options.reportsDirectory}"
|
|
124
|
+
],
|
|
125
|
+
"options": {
|
|
126
|
+
"reportsDirectory": "../../../coverage/packages/foo/bar-baz"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"dependencies": {}
|
|
132
|
+
}
|
|
133
|
+
"
|
|
134
|
+
`;
|
|
135
|
+
|
|
136
|
+
exports[`ts-reference-based not publishable package > should generate expected vite.config.ts 1`] = `
|
|
137
|
+
"/// <reference types='vitest' />
|
|
138
|
+
import { defineConfig } from 'vite';
|
|
139
|
+
|
|
140
|
+
export default defineConfig(() => ({
|
|
141
|
+
root: import.meta.dirname,
|
|
142
|
+
cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
|
|
143
|
+
plugins: [],
|
|
144
|
+
// Uncomment this if you are using workers.
|
|
145
|
+
// worker: {
|
|
146
|
+
// plugins: [],
|
|
147
|
+
// },
|
|
148
|
+
test: {
|
|
149
|
+
passWithNoTests: true,
|
|
150
|
+
name: 'foo-bar-baz',
|
|
151
|
+
watch: false,
|
|
152
|
+
globals: true,
|
|
153
|
+
environment: 'node',
|
|
154
|
+
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
155
|
+
reporters: ['default'],
|
|
156
|
+
coverage: {
|
|
157
|
+
reportsDirectory: './test-output/vitest/coverage',
|
|
158
|
+
provider: 'v8' as const,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
}));
|
|
162
|
+
"
|
|
163
|
+
`;
|
|
164
|
+
|
|
165
|
+
exports[`ts-reference-based publishable package > should generate expected package.json 1`] = `
|
|
166
|
+
"{
|
|
167
|
+
"name": "@ns/foo-bar-baz",
|
|
168
|
+
"version": "0.0.1",
|
|
169
|
+
"type": "module",
|
|
170
|
+
"main": "./dist/index.js",
|
|
171
|
+
"module": "./dist/index.js",
|
|
172
|
+
"types": "./dist/index.d.ts",
|
|
173
|
+
"exports": {
|
|
174
|
+
"./package.json": "./package.json",
|
|
175
|
+
".": {
|
|
176
|
+
"development": "./src/index.ts",
|
|
177
|
+
"types": "./dist/index.d.ts",
|
|
178
|
+
"import": "./dist/index.js",
|
|
179
|
+
"require": "./dist/index.cjs"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"files": [
|
|
183
|
+
"dist",
|
|
184
|
+
"!**/*.tsbuildinfo"
|
|
185
|
+
],
|
|
186
|
+
"nx": {
|
|
187
|
+
"name": "foo-bar-baz",
|
|
188
|
+
"targets": {
|
|
189
|
+
"build": {
|
|
190
|
+
"executor": "@nx/vite:build",
|
|
191
|
+
"outputs": [
|
|
192
|
+
"{options.outputPath}"
|
|
193
|
+
],
|
|
194
|
+
"defaultConfiguration": "production",
|
|
195
|
+
"options": {
|
|
196
|
+
"outputPath": "packages/foo/bar-baz/dist"
|
|
197
|
+
},
|
|
198
|
+
"configurations": {
|
|
199
|
+
"development": {
|
|
200
|
+
"mode": "development"
|
|
201
|
+
},
|
|
202
|
+
"production": {
|
|
203
|
+
"mode": "production"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"test": {
|
|
208
|
+
"executor": "@nx/vitest:test",
|
|
209
|
+
"outputs": [
|
|
210
|
+
"{options.reportsDirectory}"
|
|
211
|
+
],
|
|
212
|
+
"options": {
|
|
213
|
+
"reportsDirectory": "../../../coverage/packages/foo/bar-baz"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"lint": {
|
|
217
|
+
"executor": "@nx/eslint:lint"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"dependencies": {},
|
|
222
|
+
"publishConfig": {
|
|
223
|
+
"access": "public"
|
|
224
|
+
},
|
|
225
|
+
"homepage": "https://github.com/author/repo",
|
|
226
|
+
"bugs": {
|
|
227
|
+
"url": "https://github.com/author/repo/issues"
|
|
228
|
+
},
|
|
229
|
+
"author": "Author",
|
|
230
|
+
"license": "MIT",
|
|
231
|
+
"repository": {
|
|
232
|
+
"type": "git",
|
|
233
|
+
"url": "https://github.com/author/repo.git",
|
|
234
|
+
"directory": "packages/foo/bar-baz"
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
"
|
|
238
|
+
`;
|
|
239
|
+
|
|
240
|
+
exports[`ts-reference-based publishable package > should generate expected vite.config.ts 1`] = `
|
|
241
|
+
"/// <reference types='vitest' />
|
|
242
|
+
import { defineConfig } from 'vite';
|
|
243
|
+
import dts from 'vite-plugin-dts';
|
|
244
|
+
import * as path from 'path';
|
|
245
|
+
|
|
246
|
+
export default defineConfig(() => ({
|
|
247
|
+
root: import.meta.dirname,
|
|
248
|
+
cacheDir: '../../../node_modules/.vite/packages/foo/bar-baz',
|
|
249
|
+
plugins: [
|
|
250
|
+
dts({
|
|
251
|
+
entryRoot: 'src',
|
|
252
|
+
tsconfigPath: path.join(import.meta.dirname, 'tsconfig.lib.json'),
|
|
253
|
+
}),
|
|
254
|
+
],
|
|
255
|
+
// Uncomment this if you are using workers.
|
|
256
|
+
// worker: {
|
|
257
|
+
// plugins: [],
|
|
258
|
+
// },
|
|
259
|
+
// Configuration for building your library.
|
|
260
|
+
// See: https://vite.dev/guide/build.html#library-mode
|
|
261
|
+
build: {
|
|
262
|
+
outDir: './dist',
|
|
263
|
+
emptyOutDir: true,
|
|
264
|
+
reportCompressedSize: true,
|
|
265
|
+
commonjsOptions: {
|
|
266
|
+
transformMixedEsModules: true,
|
|
267
|
+
},
|
|
268
|
+
lib: {
|
|
269
|
+
// Could also be a dictionary or array of multiple entry points.
|
|
270
|
+
entry: 'src/index.ts',
|
|
271
|
+
name: 'foo-bar-baz',
|
|
272
|
+
fileName: 'index',
|
|
273
|
+
// Change this to the formats you want to support.
|
|
274
|
+
// Don't forget to update your package.json as well.
|
|
275
|
+
formats: ['es' as const, 'cjs' as const],
|
|
276
|
+
},
|
|
277
|
+
rollupOptions: {
|
|
278
|
+
// External packages that should not be bundled into your library.
|
|
279
|
+
external: [],
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
test: {
|
|
283
|
+
passWithNoTests: true,
|
|
284
|
+
name: 'foo-bar-baz',
|
|
285
|
+
watch: false,
|
|
286
|
+
globals: true,
|
|
287
|
+
environment: 'node',
|
|
288
|
+
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
289
|
+
reporters: ['default'],
|
|
290
|
+
coverage: {
|
|
291
|
+
reportsDirectory: './test-output/vitest/coverage',
|
|
292
|
+
provider: 'v8' as const,
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
}));
|
|
296
|
+
"
|
|
297
|
+
`;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Tree } from '@nx/devkit';
|
|
2
|
+
import type { PkgGeneratorSchema } from '../schema.d.ts';
|
|
3
|
+
export declare function tsPathsbased(tree: Tree, name: string, { path, publishable, buildable, env, preset }: PkgGeneratorSchema): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=tsPathsBased.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsPathsBased.d.ts","sourceRoot":"","sources":["../../../../src/generators/pkg/lib/tsPathsBased.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAA+B,MAAM,YAAY,CAAC;AAMpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASzD,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBAuDlE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { joinPathFragments, readJson } from '@nx/devkit';
|
|
2
|
+
import { libraryGenerator } from '@nx/js';
|
|
3
|
+
import { addPublishInfoToPackageJson } from "./util/addPublishInfoToPackageJson.js";
|
|
4
|
+
import { setJsTsOptions } from "./util/setJsTsOptions.js";
|
|
5
|
+
import { setNextTsOptions } from "./util/setNextTsOptions.js";
|
|
6
|
+
import { setReactTsOptions } from "./util/setReactTsOptions.js";
|
|
7
|
+
import { updateViteBuildFormats } from "./util/updateViteBuildFormats.js";
|
|
8
|
+
import { updateVitestConfig } from "./util/updateVitestConfig.js";
|
|
9
|
+
export async function tsPathsbased(tree, name, { path, publishable, buildable, env, preset }) {
|
|
10
|
+
if (publishable && !buildable) {
|
|
11
|
+
throw new Error('Publishable packages must be buildable');
|
|
12
|
+
}
|
|
13
|
+
const schema = {
|
|
14
|
+
name,
|
|
15
|
+
directory: path,
|
|
16
|
+
linter: 'eslint',
|
|
17
|
+
unitTestRunner: 'vitest',
|
|
18
|
+
strict: true,
|
|
19
|
+
bundler: publishable ? 'vite' : 'tsc',
|
|
20
|
+
minimal: !publishable,
|
|
21
|
+
publishable,
|
|
22
|
+
skipPackageJson: true,
|
|
23
|
+
useProjectJson: !publishable,
|
|
24
|
+
buildable,
|
|
25
|
+
};
|
|
26
|
+
if (publishable) {
|
|
27
|
+
const namespace = readJson(tree, 'package.json').name.split('/')[0];
|
|
28
|
+
if (!namespace) {
|
|
29
|
+
throw new Error('Namespace is not defined');
|
|
30
|
+
}
|
|
31
|
+
if (!namespace.startsWith('@')) {
|
|
32
|
+
throw new Error('Namespace must start with @');
|
|
33
|
+
}
|
|
34
|
+
schema.importPath = `${namespace}/${name}`;
|
|
35
|
+
}
|
|
36
|
+
await libraryGenerator(tree, schema);
|
|
37
|
+
await updateVitestConfig(tree, path, env);
|
|
38
|
+
if (preset === 'js') {
|
|
39
|
+
setJsTsOptions(tree, path);
|
|
40
|
+
}
|
|
41
|
+
if (preset === 'react') {
|
|
42
|
+
setReactTsOptions(tree, path);
|
|
43
|
+
}
|
|
44
|
+
if (preset === 'nextjs') {
|
|
45
|
+
setNextTsOptions(tree, path);
|
|
46
|
+
}
|
|
47
|
+
if (publishable) {
|
|
48
|
+
updateViteBuildFormats(tree, path);
|
|
49
|
+
addPublishInfoToPackageJson(tree, path);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
tree.delete(joinPathFragments(path, 'package.json'));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Tree } from '@nx/devkit';
|
|
2
|
+
import type { PkgGeneratorSchema } from '../schema.d.ts';
|
|
3
|
+
export declare function tsReferenceBased(tree: Tree, name: string, { path, publishable, buildable, env, preset }: PkgGeneratorSchema): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=tsReferenceBased.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsReferenceBased.d.ts","sourceRoot":"","sources":["../../../../src/generators/pkg/lib/tsReferenceBased.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAiC,MAAM,YAAY,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAUzD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBA4ElE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { joinPathFragments, updateJson } from '@nx/devkit';
|
|
2
|
+
import { libraryGenerator } from '@nx/js';
|
|
3
|
+
import { addScopedLocalPackage } from "./util/addLocalPackage.js";
|
|
4
|
+
import { addPublishInfoToPackageJson } from "./util/addPublishInfoToPackageJson.js";
|
|
5
|
+
import { setJsTsOptions } from "./util/setJsTsOptions.js";
|
|
6
|
+
import { setNextTsOptions } from "./util/setNextTsOptions.js";
|
|
7
|
+
import { setReactTsOptions } from "./util/setReactTsOptions.js";
|
|
8
|
+
import { updateViteBuildFormats } from "./util/updateViteBuildFormats.js";
|
|
9
|
+
import { updateVitestConfig } from "./util/updateVitestConfig.js";
|
|
10
|
+
export async function tsReferenceBased(tree, name, { path, publishable, buildable, env, preset }) {
|
|
11
|
+
if (publishable && !buildable) {
|
|
12
|
+
throw new Error('Publishable packages must be buildable');
|
|
13
|
+
}
|
|
14
|
+
const schema = {
|
|
15
|
+
name,
|
|
16
|
+
directory: path,
|
|
17
|
+
linter: 'eslint',
|
|
18
|
+
unitTestRunner: 'vitest',
|
|
19
|
+
strict: true,
|
|
20
|
+
bundler: buildable ? 'vite' : 'none',
|
|
21
|
+
minimal: !publishable,
|
|
22
|
+
publishable,
|
|
23
|
+
skipPackageJson: false,
|
|
24
|
+
useProjectJson: false,
|
|
25
|
+
};
|
|
26
|
+
await libraryGenerator(tree, schema);
|
|
27
|
+
await updateVitestConfig(tree, path, env);
|
|
28
|
+
if (preset === 'js') {
|
|
29
|
+
setJsTsOptions(tree, path);
|
|
30
|
+
}
|
|
31
|
+
if (preset === 'react') {
|
|
32
|
+
setReactTsOptions(tree, path);
|
|
33
|
+
}
|
|
34
|
+
if (preset === 'nextjs') {
|
|
35
|
+
setNextTsOptions(tree, path);
|
|
36
|
+
}
|
|
37
|
+
if (publishable) {
|
|
38
|
+
// Update vite.config.ts to include both ES and CJS formats
|
|
39
|
+
updateViteBuildFormats(tree, path);
|
|
40
|
+
// Update package.json exports to include require field for cjs
|
|
41
|
+
updateJson(tree, joinPathFragments(path, 'package.json'), json => {
|
|
42
|
+
const dotExport = json.exports?.['.'];
|
|
43
|
+
if (typeof dotExport !== 'object' || dotExport === null) {
|
|
44
|
+
throw new Error('"." export is not an object in generated package.json');
|
|
45
|
+
}
|
|
46
|
+
if (!dotExport['types'] || !dotExport['import']) {
|
|
47
|
+
throw new Error('"exports" is missing required "types" or "import" fields');
|
|
48
|
+
}
|
|
49
|
+
// Remove `default` (if present) and add `require` for CJS.
|
|
50
|
+
// Keep the custom condition (e.g. @space-arch/source) first for correct resolution order.
|
|
51
|
+
const { default: _default, ...kept } = dotExport;
|
|
52
|
+
json.exports['.'] = {
|
|
53
|
+
...kept,
|
|
54
|
+
require: './dist/index.cjs',
|
|
55
|
+
};
|
|
56
|
+
return json;
|
|
57
|
+
});
|
|
58
|
+
addPublishInfoToPackageJson(tree, path);
|
|
59
|
+
}
|
|
60
|
+
// do that in both cases
|
|
61
|
+
addScopedLocalPackage(tree, name);
|
|
62
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Tree } from '@nx/devkit';
|
|
2
|
+
export interface AddLocalPackageOptions {
|
|
3
|
+
packageName: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
isDev?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Adds a local package to the root package.json dependencies
|
|
9
|
+
* @param tree - The NX Tree instance
|
|
10
|
+
* @param options - Configuration options for adding the package
|
|
11
|
+
*/
|
|
12
|
+
export declare function addLocalPackage(tree: Tree, options: AddLocalPackageOptions): void;
|
|
13
|
+
/**
|
|
14
|
+
* Adds a local package with the workspace scope automatically applied
|
|
15
|
+
* @param tree - The NX Tree instance
|
|
16
|
+
* @param packageName - The package name (without scope)
|
|
17
|
+
* @param isDev - Whether to add to devDependencies instead of dependencies
|
|
18
|
+
*/
|
|
19
|
+
export declare function addScopedLocalPackage(tree: Tree, packageName: string, isDev?: boolean): void;
|
|
20
|
+
//# sourceMappingURL=addLocalPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addLocalPackage.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/addLocalPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAgBN;AAmBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,KAAK,UAAQ,GACZ,IAAI,CASN"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { readJson, updateJson } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Adds a local package to the root package.json dependencies
|
|
4
|
+
* @param tree - The NX Tree instance
|
|
5
|
+
* @param options - Configuration options for adding the package
|
|
6
|
+
*/
|
|
7
|
+
export function addLocalPackage(tree, options) {
|
|
8
|
+
const { packageName, version = 'workspace:*', isDev = false } = options;
|
|
9
|
+
updateJson(tree, 'package.json', json => {
|
|
10
|
+
const dependencyKey = isDev ? 'devDependencies' : 'dependencies';
|
|
11
|
+
// Ensure the dependencies object exists
|
|
12
|
+
if (!json[dependencyKey]) {
|
|
13
|
+
json[dependencyKey] = {};
|
|
14
|
+
}
|
|
15
|
+
// Add the package with the specified version
|
|
16
|
+
json[dependencyKey][packageName] = version;
|
|
17
|
+
return json;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extracts the scope from the root package.json name field
|
|
22
|
+
* @param tree - The NX Tree instance
|
|
23
|
+
* @returns The scope (e.g., '@space-arch') or null if no scope
|
|
24
|
+
*/
|
|
25
|
+
function getWorkspaceScope(tree) {
|
|
26
|
+
const rootPackageJson = readJson(tree, 'package.json');
|
|
27
|
+
const packageName = rootPackageJson.name;
|
|
28
|
+
if (packageName && packageName.startsWith('@')) {
|
|
29
|
+
const scopeMatch = packageName.match(/^(@[^/]+)/);
|
|
30
|
+
return scopeMatch ? scopeMatch[1] : null;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Adds a local package with the workspace scope automatically applied
|
|
36
|
+
* @param tree - The NX Tree instance
|
|
37
|
+
* @param packageName - The package name (without scope)
|
|
38
|
+
* @param isDev - Whether to add to devDependencies instead of dependencies
|
|
39
|
+
*/
|
|
40
|
+
export function addScopedLocalPackage(tree, packageName, isDev = false) {
|
|
41
|
+
const scope = getWorkspaceScope(tree);
|
|
42
|
+
const fullPackageName = scope ? `${scope}/${packageName}` : packageName;
|
|
43
|
+
addLocalPackage(tree, {
|
|
44
|
+
packageName: fullPackageName,
|
|
45
|
+
version: 'workspace:*',
|
|
46
|
+
isDev,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addPublishInfoToPackageJson.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/addPublishInfoToPackageJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAA2C,MAAM,YAAY,CAAC;AAehF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAuB1E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { joinPathFragments, readJson, updateJson } from '@nx/devkit';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const PackageJsonSchema = z.object({
|
|
4
|
+
repository: z.object({
|
|
5
|
+
type: z.string(),
|
|
6
|
+
url: z.string(),
|
|
7
|
+
directory: z.string(),
|
|
8
|
+
}),
|
|
9
|
+
homepage: z.string(),
|
|
10
|
+
bugs: z.record(z.string(), z.string()),
|
|
11
|
+
author: z.string(),
|
|
12
|
+
license: z.string(),
|
|
13
|
+
});
|
|
14
|
+
export function addPublishInfoToPackageJson(tree, projectPath) {
|
|
15
|
+
const packageJsonPath = joinPathFragments(projectPath, 'package.json');
|
|
16
|
+
const rootPackageJson = readJson(tree, 'package.json');
|
|
17
|
+
const { repository, homepage, bugs, author, license } = PackageJsonSchema.parse(rootPackageJson);
|
|
18
|
+
updateJson(tree, packageJsonPath, json => {
|
|
19
|
+
return Object.assign(json, {
|
|
20
|
+
publishConfig: {
|
|
21
|
+
access: 'public',
|
|
22
|
+
},
|
|
23
|
+
homepage,
|
|
24
|
+
bugs,
|
|
25
|
+
author,
|
|
26
|
+
license,
|
|
27
|
+
repository: {
|
|
28
|
+
...repository,
|
|
29
|
+
directory: joinPathFragments(repository.directory, projectPath),
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Tree } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the vite config file path, checking for `.mts` first then `.ts`.
|
|
4
|
+
* @returns The resolved path, or `null` if no vite config exists.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveViteConfigPath(tree: Tree, projectRoot: string): string | null;
|
|
7
|
+
//# sourceMappingURL=resolveViteConfigPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveViteConfigPath.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/resolveViteConfigPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,YAAY,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { joinPathFragments } from '@nx/devkit';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the vite config file path, checking for `.mts` first then `.ts`.
|
|
4
|
+
* @returns The resolved path, or `null` if no vite config exists.
|
|
5
|
+
*/
|
|
6
|
+
export function resolveViteConfigPath(tree, projectRoot) {
|
|
7
|
+
for (const ext of ['mts', 'ts']) {
|
|
8
|
+
const p = joinPathFragments(projectRoot, `vite.config.${ext}`);
|
|
9
|
+
if (tree.exists(p))
|
|
10
|
+
return p;
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setJsTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setJsTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAatD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { updateArrayProperty } from "./updateArrayProperty.js";
|
|
2
|
+
import { updateTsConfigLibJson } from "./updateTsConfigLibJson.js";
|
|
3
|
+
import { updateTsConfigSpecJson } from "./updateTsConfigSpecJson.js";
|
|
4
|
+
export function setJsTsOptions(tree, path) {
|
|
5
|
+
updateTsConfigSpecJson(tree, path, json => {
|
|
6
|
+
json.compilerOptions.module = 'nodenext';
|
|
7
|
+
json.compilerOptions.moduleResolution = 'nodenext';
|
|
8
|
+
return json;
|
|
9
|
+
});
|
|
10
|
+
updateTsConfigLibJson(tree, path, json => {
|
|
11
|
+
json.compilerOptions.module = 'nodenext';
|
|
12
|
+
json.compilerOptions.moduleResolution = 'nodenext';
|
|
13
|
+
updateArrayProperty(json.compilerOptions, 'types', ['node', 'vite/client']);
|
|
14
|
+
return json;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setNextTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setNextTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QASxD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { setReactTsOptions } from "./setReactTsOptions.js";
|
|
2
|
+
import { updateArrayProperty } from "./updateArrayProperty.js";
|
|
3
|
+
import { updateTsConfigLibJson } from "./updateTsConfigLibJson.js";
|
|
4
|
+
export function setNextTsOptions(tree, path) {
|
|
5
|
+
setReactTsOptions(tree, path);
|
|
6
|
+
updateTsConfigLibJson(tree, path, json => {
|
|
7
|
+
updateArrayProperty(json.compilerOptions, 'types', [
|
|
8
|
+
'next',
|
|
9
|
+
'@nx/next/typings/image.d.ts',
|
|
10
|
+
]);
|
|
11
|
+
return json;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setReactTsOptions.d.ts","sourceRoot":"","sources":["../../../../../src/generators/pkg/lib/util/setReactTsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,YAAY,CAAC;AAqB1D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,QAmDzD"}
|