@nx/vite 18.0.4 → 18.1.0-beta.1
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/package.json +4 -4
- package/src/executors/test/lib/utils.js +39 -1
- package/src/executors/test/lib/utils.js.map +1 -1
- package/src/generators/configuration/configuration.js +6 -68
- package/src/generators/configuration/configuration.js.map +1 -1
- package/src/generators/configuration/lib/convert-non-vite.d.ts +5 -0
- package/src/generators/configuration/lib/convert-non-vite.js +62 -0
- package/src/generators/configuration/lib/convert-non-vite.js.map +1 -0
- package/src/generators/configuration/schema.d.ts +0 -3
- package/src/generators/configuration/schema.json +0 -12
- package/src/generators/vitest/vitest-generator.js +2 -2
- package/src/generators/vitest/vitest-generator.js.map +1 -1
- package/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.js +2 -16
- package/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.js.map +1 -1
- package/src/migrations/update-17-2-0/update-vite-config.js +2 -16
- package/src/migrations/update-17-2-0/update-vite-config.js.map +1 -1
- package/src/{migrations/update-17-2-0/lib → utils}/find-vite-config.d.ts +1 -0
- package/src/utils/find-vite-config.js +46 -0
- package/src/utils/find-vite-config.js.map +1 -0
- package/src/utils/generator-utils.d.ts +8 -11
- package/src/utils/generator-utils.js +71 -186
- package/src/utils/generator-utils.js.map +1 -1
- package/src/utils/test-utils.js +8 -16
- package/src/utils/test-utils.js.map +1 -1
- package/src/migrations/update-17-2-0/lib/find-vite-config.js +0 -25
- package/src/migrations/update-17-2-0/lib/find-vite-config.js.map +0 -1
- package/src/utils/test-files/react-project.config.json +0 -82
- package/src/utils/test-files/web-project.config.json +0 -69
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/vite",
|
|
3
|
-
"version": "18.0.
|
|
3
|
+
"version": "18.1.0-beta.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Plugin for building and testing applications using Vite",
|
|
6
6
|
"repository": {
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"migrations": "./migrations.json"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@nx/devkit": "18.0.
|
|
32
|
+
"@nx/devkit": "18.1.0-beta.1",
|
|
33
33
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
34
34
|
"@swc/helpers": "~0.5.0",
|
|
35
35
|
"enquirer": "~2.3.6",
|
|
36
|
-
"@nx/js": "18.0.
|
|
36
|
+
"@nx/js": "18.1.0-beta.1",
|
|
37
37
|
"tsconfig-paths": "^4.1.2",
|
|
38
|
-
"@nrwl/vite": "18.0.
|
|
38
|
+
"@nrwl/vite": "18.1.0-beta.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"vite": "^5.0.0",
|
|
@@ -45,8 +45,9 @@ async function getOptions(options, context, projectRoot, extraArgs) {
|
|
|
45
45
|
`);
|
|
46
46
|
}
|
|
47
47
|
const root = projectRoot === '.' ? process.cwd() : (0, _path.relative)(context.cwd, (0, _devkit.joinPathFragments)(context.root, projectRoot));
|
|
48
|
+
const normalizedExtraArgs = normalizeArgs(extraArgs);
|
|
48
49
|
var _resolved_config_root;
|
|
49
|
-
const settings = _extends._({},
|
|
50
|
+
const settings = _extends._({}, normalizedExtraArgs, {
|
|
50
51
|
// This should not be needed as it's going to be set in vite.config.ts
|
|
51
52
|
// but leaving it here in case someone did not migrate correctly
|
|
52
53
|
root: (_resolved_config_root = resolved.config.root) != null ? _resolved_config_root : root,
|
|
@@ -63,5 +64,42 @@ async function getExtraArgs(options) {
|
|
|
63
64
|
}
|
|
64
65
|
return extraArgs;
|
|
65
66
|
}
|
|
67
|
+
// normalizes some args that were previously normalized by `startVitest` until this is fixed
|
|
68
|
+
// https://github.com/vitest-dev/vitest/pull/5126/files#diff-49ef635be88fe607c8682e81ab56b061ba9aafd5c94a5690a70b90a54604cd24L40-L62
|
|
69
|
+
function normalizeArgs(extraArgs) {
|
|
70
|
+
var _args_typecheck;
|
|
71
|
+
const args = _extends._({}, extraArgs);
|
|
72
|
+
if (typeof args.coverage === 'boolean') {
|
|
73
|
+
args.coverage = {
|
|
74
|
+
enabled: args.coverage
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// running "vitest --browser", assumes browser name is set in the config
|
|
78
|
+
if (typeof args.browser === 'boolean') {
|
|
79
|
+
args.browser = {
|
|
80
|
+
enabled: args.browser
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// running "vitest --browser=chrome"
|
|
84
|
+
if (typeof args.browser === 'string') {
|
|
85
|
+
args.browser = {
|
|
86
|
+
enabled: true,
|
|
87
|
+
name: args.browser
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (typeof args.typecheck === 'boolean') {
|
|
91
|
+
args.typecheck = {
|
|
92
|
+
enabled: true
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (typeof ((_args_typecheck = args.typecheck) == null ? void 0 : _args_typecheck.only) === 'boolean') {
|
|
96
|
+
var _args;
|
|
97
|
+
var _typecheck;
|
|
98
|
+
(_typecheck = (_args = args).typecheck) != null ? _typecheck : _args.typecheck = {};
|
|
99
|
+
args.typecheck.only = true;
|
|
100
|
+
args.typecheck.enabled = true;
|
|
101
|
+
}
|
|
102
|
+
return args;
|
|
103
|
+
}
|
|
66
104
|
|
|
67
105
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n} from '@nx/devkit';\nimport { VitestExecutorOptions } from '../schema';\nimport { normalizeViteConfigFilePath } from '../../../utils/options-utils';\nimport { relative } from 'path';\nimport { loadViteDynamicImport } from '../../../utils/executor-utils';\n\nexport async function getOptions(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string,\n extraArgs: Record<string, any>\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile, mergeConfig } = await loadViteDynamicImport();\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolved = await loadConfigFromFile(\n {\n mode: extraArgs?.mode ?? 'production',\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\n Some settings may not be applied as expected.\n You can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const settings = {\n ...
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/vite/src/executors/test/lib/utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n stripIndents,\n} from '@nx/devkit';\nimport { VitestExecutorOptions } from '../schema';\nimport { normalizeViteConfigFilePath } from '../../../utils/options-utils';\nimport { relative } from 'path';\nimport { loadViteDynamicImport } from '../../../utils/executor-utils';\n\nexport async function getOptions(\n options: VitestExecutorOptions,\n context: ExecutorContext,\n projectRoot: string,\n extraArgs: Record<string, any>\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { loadConfigFromFile, mergeConfig } = await loadViteDynamicImport();\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n\n if (!viteConfigPath) {\n throw new Error(\n stripIndents`\n Unable to load test config from config file ${viteConfigPath}.\n \n Please make sure that vitest is configured correctly, \n or use the @nx/vite:vitest generator to configure it for you.\n You can read more here: https://nx.dev/nx-api/vite/generators/vitest\n `\n );\n }\n\n const resolved = await loadConfigFromFile(\n {\n mode: extraArgs?.mode ?? 'production',\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.['test']) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved?.path ?? viteConfigPath\n }\n Some settings may not be applied as expected.\n You can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const normalizedExtraArgs = normalizeArgs(extraArgs);\n\n const settings = {\n ...normalizedExtraArgs,\n // This should not be needed as it's going to be set in vite.config.ts\n // but leaving it here in case someone did not migrate correctly\n root: resolved.config.root ?? root,\n configFile: viteConfigPath,\n };\n\n return mergeConfig(resolved?.config?.['test'] ?? {}, settings);\n}\n\nexport async function getExtraArgs(\n options: VitestExecutorOptions\n): Promise<Record<string, any>> {\n // support passing extra args to vite cli\n const extraArgs: Record<string, any> = {};\n for (const key of Object.keys(options)) {\n extraArgs[key] = options[key];\n }\n\n return extraArgs;\n}\n\n// normalizes some args that were previously normalized by `startVitest` until this is fixed\n// https://github.com/vitest-dev/vitest/pull/5126/files#diff-49ef635be88fe607c8682e81ab56b061ba9aafd5c94a5690a70b90a54604cd24L40-L62\nfunction normalizeArgs(extraArgs: Record<string, any>) {\n const args = { ...extraArgs };\n\n if (typeof args.coverage === 'boolean') {\n args.coverage = { enabled: args.coverage };\n }\n // running \"vitest --browser\", assumes browser name is set in the config\n if (typeof args.browser === 'boolean') {\n args.browser = { enabled: args.browser } as any;\n }\n // running \"vitest --browser=chrome\"\n if (typeof args.browser === 'string') {\n args.browser = { enabled: true, name: args.browser };\n }\n if (typeof args.typecheck === 'boolean') {\n args.typecheck = { enabled: true };\n }\n if (typeof args.typecheck?.only === 'boolean') {\n args.typecheck ??= {};\n args.typecheck.only = true;\n args.typecheck.enabled = true;\n }\n\n return args;\n}\n"],"names":["getOptions","getExtraArgs","options","context","projectRoot","extraArgs","resolved","loadConfigFromFile","mergeConfig","loadViteDynamicImport","viteConfigPath","normalizeViteConfigFilePath","root","configFile","Error","stripIndents","mode","command","config","logger","warn","path","projectName","process","cwd","relative","joinPathFragments","normalizedExtraArgs","normalizeArgs","settings","key","Object","keys","args","coverage","enabled","browser","name","typecheck","only"],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ const _generatorutils = require("../../utils/generator-utils");
|
|
|
23
23
|
const _init = require("../init/init");
|
|
24
24
|
const _vitestgenerator = require("../vitest/vitest-generator");
|
|
25
25
|
const _ensuredependencies = require("../../utils/ensure-dependencies");
|
|
26
|
+
const _convertnonvite = require("./lib/convert-non-vite");
|
|
26
27
|
function viteConfigurationGenerator(host, schema) {
|
|
27
28
|
return viteConfigurationGeneratorInternal(host, _extends._({
|
|
28
29
|
addPlugin: false
|
|
@@ -40,9 +41,6 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
|
|
|
40
41
|
const { targets, root: projectRoot } = projectConfig;
|
|
41
42
|
var _projectConfig_projectType;
|
|
42
43
|
const projectType = (_projectConfig_projectType = projectConfig.projectType) != null ? _projectConfig_projectType : 'library';
|
|
43
|
-
let buildTargetName = 'build';
|
|
44
|
-
let serveTargetName = 'serve';
|
|
45
|
-
let testTargetName = 'test';
|
|
46
44
|
var _includeLib;
|
|
47
45
|
(_includeLib = (_schema1 = schema).includeLib) != null ? _includeLib : _schema1.includeLib = projectType === 'library';
|
|
48
46
|
var _testEnvironment;
|
|
@@ -52,67 +50,7 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
|
|
|
52
50
|
* to use the vite executors.
|
|
53
51
|
*/ let projectAlreadyHasViteTargets = {};
|
|
54
52
|
if (!schema.newProject) {
|
|
55
|
-
|
|
56
|
-
const userProvidedTargetName = {
|
|
57
|
-
build: schema.buildTarget,
|
|
58
|
-
serve: schema.serveTarget,
|
|
59
|
-
test: schema.testTarget
|
|
60
|
-
};
|
|
61
|
-
const { validFoundTargetName, projectContainsUnsupportedExecutor, userProvidedTargetIsUnsupported, alreadyHasNxViteTargets } = (0, _generatorutils.findExistingTargetsInProject)(targets, userProvidedTargetName);
|
|
62
|
-
projectAlreadyHasViteTargets = alreadyHasNxViteTargets;
|
|
63
|
-
/**
|
|
64
|
-
* This means that we only found unsupported build targets in that project.
|
|
65
|
-
* The only way that buildTarget is defined, means that it is supported.
|
|
66
|
-
*
|
|
67
|
-
* If the `unsupported` flag was false, it would mean that we did not find
|
|
68
|
-
* a build target at all, so we can create a new one.
|
|
69
|
-
*
|
|
70
|
-
* So we only throw if we found a target, but it is unsupported.
|
|
71
|
-
*/ if (!validFoundTargetName.build && projectContainsUnsupportedExecutor) {
|
|
72
|
-
throw new Error(`The project ${schema.project} cannot be converted to use the @nx/vite executors.`);
|
|
73
|
-
}
|
|
74
|
-
if (alreadyHasNxViteTargets.build && (alreadyHasNxViteTargets.serve || projectType === 'library') && alreadyHasNxViteTargets.test) {
|
|
75
|
-
throw new Error(`The project ${schema.project} is already configured to use the @nx/vite executors.
|
|
76
|
-
Please try a different project, or remove the existing targets
|
|
77
|
-
and re-run this generator to reset the existing Vite Configuration.
|
|
78
|
-
`);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* This means that we did not find any supported executors
|
|
82
|
-
* so we don't have any valid target names.
|
|
83
|
-
*
|
|
84
|
-
* However, the executors that we may have found are not in the
|
|
85
|
-
* list of the specifically unsupported executors either.
|
|
86
|
-
*
|
|
87
|
-
* So, we should warn the user about it.
|
|
88
|
-
*/ if (!projectContainsUnsupportedExecutor && !validFoundTargetName.build && !validFoundTargetName.serve && !validFoundTargetName.test) {
|
|
89
|
-
await (0, _generatorutils.handleUnknownExecutors)(schema.project);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* There is a possibility at this stage that the user has provided
|
|
93
|
-
* targets with unsupported executors.
|
|
94
|
-
* We keep track here of which of the targets that the user provided
|
|
95
|
-
* are unsupported.
|
|
96
|
-
* We do this with the `userProvidedTargetIsUnsupported` object,
|
|
97
|
-
* which contains flags for each target (whether it is supported or not).
|
|
98
|
-
*
|
|
99
|
-
* We also keep track of the targets that we found in the project,
|
|
100
|
-
* through the findExistingTargetsInProject function, which returns
|
|
101
|
-
* targets for build/serve/test that use supported executors, and
|
|
102
|
-
* can be converted to use the vite executors. These are the
|
|
103
|
-
* kept in the validFoundTargetName object.
|
|
104
|
-
*/ await (0, _generatorutils.handleUnsupportedUserProvidedTargets)(userProvidedTargetIsUnsupported, userProvidedTargetName, validFoundTargetName);
|
|
105
|
-
var _validFoundTargetName_build;
|
|
106
|
-
/**
|
|
107
|
-
* Once the user is at this stage, then they can go ahead and convert.
|
|
108
|
-
*/ buildTargetName = (_validFoundTargetName_build = validFoundTargetName.build) != null ? _validFoundTargetName_build : buildTargetName;
|
|
109
|
-
var _validFoundTargetName_serve;
|
|
110
|
-
serveTargetName = (_validFoundTargetName_serve = validFoundTargetName.serve) != null ? _validFoundTargetName_serve : serveTargetName;
|
|
111
|
-
if (projectType === 'application') {
|
|
112
|
-
(0, _generatorutils.moveAndEditIndexHtml)(tree, schema, buildTargetName);
|
|
113
|
-
}
|
|
114
|
-
(0, _generatorutils.deleteWebpackConfig)(tree, projectRoot, targets == null ? void 0 : (_targets_buildTargetName = targets[buildTargetName]) == null ? void 0 : (_targets_buildTargetName_options = _targets_buildTargetName.options) == null ? void 0 : _targets_buildTargetName_options.webpackConfig);
|
|
115
|
-
(0, _generatorutils.editTsConfig)(tree, schema);
|
|
53
|
+
await (0, _convertnonvite.convertNonVite)(tree, schema, projectRoot, projectType, targets);
|
|
116
54
|
}
|
|
117
55
|
const jsInitTask = await (0, _js.initGenerator)(tree, _extends._({}, schema, {
|
|
118
56
|
skipFormat: true,
|
|
@@ -128,14 +66,14 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
|
|
|
128
66
|
const hasPlugin = (_nxJson_plugins = nxJson.plugins) == null ? void 0 : _nxJson_plugins.some((p)=>typeof p === 'string' ? p === '@nx/vite/plugin' : p.plugin === '@nx/vite/plugin');
|
|
129
67
|
if (!hasPlugin) {
|
|
130
68
|
if (!projectAlreadyHasViteTargets.build) {
|
|
131
|
-
(0, _generatorutils.
|
|
69
|
+
(0, _generatorutils.addBuildTarget)(tree, schema, 'build');
|
|
132
70
|
}
|
|
133
71
|
if (!schema.includeLib) {
|
|
134
72
|
if (!projectAlreadyHasViteTargets.serve) {
|
|
135
|
-
(0, _generatorutils.
|
|
73
|
+
(0, _generatorutils.addServeTarget)(tree, schema, 'serve');
|
|
136
74
|
}
|
|
137
75
|
if (!projectAlreadyHasViteTargets.preview) {
|
|
138
|
-
(0, _generatorutils.addPreviewTarget)(tree, schema,
|
|
76
|
+
(0, _generatorutils.addPreviewTarget)(tree, schema, 'preview');
|
|
139
77
|
}
|
|
140
78
|
}
|
|
141
79
|
}
|
|
@@ -192,7 +130,7 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
|
|
|
192
130
|
inSourceTests: schema.inSourceTests,
|
|
193
131
|
coverageProvider: 'v8',
|
|
194
132
|
skipViteConfig: true,
|
|
195
|
-
testTarget:
|
|
133
|
+
testTarget: 'test',
|
|
196
134
|
skipFormat: true,
|
|
197
135
|
addPlugin: schema.addPlugin
|
|
198
136
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\n\nimport {\n addOrChangeBuildTarget,\n addOrChangeServeTarget,\n addPreviewTarget,\n createOrEditViteConfig,\n deleteWebpackConfig,\n editTsConfig,\n findExistingTargetsInProject,\n handleUnknownExecutors,\n handleUnsupportedUserProvidedTargets,\n moveAndEditIndexHtml,\n TargetFlags,\n UserProvidedTargetName,\n} from '../../utils/generator-utils';\n\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { ViteConfigurationGeneratorSchema } from './schema';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n schema.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const {\n targets,\n\n root: projectRoot,\n } = projectConfig;\n\n const projectType = projectConfig.projectType ?? 'library';\n let buildTargetName = 'build';\n let serveTargetName = 'serve';\n let testTargetName = 'test';\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n const userProvidedTargetName: UserProvidedTargetName = {\n build: schema.buildTarget,\n serve: schema.serveTarget,\n test: schema.testTarget,\n };\n\n const {\n validFoundTargetName,\n projectContainsUnsupportedExecutor,\n userProvidedTargetIsUnsupported,\n alreadyHasNxViteTargets,\n } = findExistingTargetsInProject(targets, userProvidedTargetName);\n projectAlreadyHasViteTargets = alreadyHasNxViteTargets;\n /**\n * This means that we only found unsupported build targets in that project.\n * The only way that buildTarget is defined, means that it is supported.\n *\n * If the `unsupported` flag was false, it would mean that we did not find\n * a build target at all, so we can create a new one.\n *\n * So we only throw if we found a target, but it is unsupported.\n */\n if (!validFoundTargetName.build && projectContainsUnsupportedExecutor) {\n throw new Error(\n `The project ${schema.project} cannot be converted to use the @nx/vite executors.`\n );\n }\n\n if (\n alreadyHasNxViteTargets.build &&\n (alreadyHasNxViteTargets.serve || projectType === 'library') &&\n alreadyHasNxViteTargets.test\n ) {\n throw new Error(\n `The project ${schema.project} is already configured to use the @nx/vite executors.\n Please try a different project, or remove the existing targets \n and re-run this generator to reset the existing Vite Configuration.\n `\n );\n }\n\n /**\n * This means that we did not find any supported executors\n * so we don't have any valid target names.\n *\n * However, the executors that we may have found are not in the\n * list of the specifically unsupported executors either.\n *\n * So, we should warn the user about it.\n */\n\n if (\n !projectContainsUnsupportedExecutor &&\n !validFoundTargetName.build &&\n !validFoundTargetName.serve &&\n !validFoundTargetName.test\n ) {\n await handleUnknownExecutors(schema.project);\n }\n\n /**\n * There is a possibility at this stage that the user has provided\n * targets with unsupported executors.\n * We keep track here of which of the targets that the user provided\n * are unsupported.\n * We do this with the `userProvidedTargetIsUnsupported` object,\n * which contains flags for each target (whether it is supported or not).\n *\n * We also keep track of the targets that we found in the project,\n * through the findExistingTargetsInProject function, which returns\n * targets for build/serve/test that use supported executors, and\n * can be converted to use the vite executors. These are the\n * kept in the validFoundTargetName object.\n */\n await handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported,\n userProvidedTargetName,\n validFoundTargetName\n );\n\n /**\n * Once the user is at this stage, then they can go ahead and convert.\n */\n\n buildTargetName = validFoundTargetName.build ?? buildTargetName;\n serveTargetName = validFoundTargetName.serve ?? serveTargetName;\n\n if (projectType === 'application') {\n moveAndEditIndexHtml(tree, schema, buildTargetName);\n }\n\n deleteWebpackConfig(\n tree,\n projectRoot,\n targets?.[buildTargetName]?.options?.webpackConfig\n );\n\n editTsConfig(tree, schema);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, { ...schema, skipFormat: true });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addOrChangeBuildTarget(tree, schema, buildTargetName);\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addOrChangeServeTarget(tree, schema, serveTargetName);\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, serveTargetName);\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n if (!json.compilerOptions) {\n json.compilerOptions = {};\n }\n if (!json.compilerOptions.types) {\n json.compilerOptions.types = [];\n }\n if (!json.compilerOptions.types.includes('vite/client')) {\n return {\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n types: [...json.compilerOptions.types, 'vite/client'],\n },\n };\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: testTargetName,\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(vitestTask);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","process","env","NX_ADD_PLUGINS","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","buildTargetName","serveTargetName","testTargetName","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","userProvidedTargetName","build","buildTarget","serve","serveTarget","test","testTarget","validFoundTargetName","projectContainsUnsupportedExecutor","userProvidedTargetIsUnsupported","alreadyHasNxViteTargets","findExistingTargetsInProject","Error","handleUnknownExecutors","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","deleteWebpackConfig","options","webpackConfig","editTsConfig","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","hasPlugin","plugins","some","p","plugin","addOrChangeBuildTarget","addOrChangeServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","formatFiles","runTasksInSerial"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\n\nimport {\n addBuildTarget,\n addServeTarget,\n addPreviewTarget,\n createOrEditViteConfig,\n TargetFlags,\n} from '../../utils/generator-utils';\n\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { ViteConfigurationGeneratorSchema } from './schema';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport { convertNonVite } from './lib/convert-non-vite';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n schema.addPlugin ??= process.env.NX_ADD_PLUGINS !== 'false';\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const { targets, root: projectRoot } = projectConfig;\n\n const projectType = projectConfig.projectType ?? 'library';\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n await convertNonVite(tree, schema, projectRoot, projectType, targets);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, { ...schema, skipFormat: true });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addBuildTarget(tree, schema, 'build');\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addServeTarget(tree, schema, 'serve');\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, 'preview');\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n if (!json.compilerOptions) {\n json.compilerOptions = {};\n }\n if (!json.compilerOptions.types) {\n json.compilerOptions.types = [];\n }\n if (!json.compilerOptions.types.includes('vite/client')) {\n return {\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n types: [...json.compilerOptions.types, 'vite/client'],\n },\n };\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: 'test',\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(vitestTask);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","process","env","NX_ADD_PLUGINS","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","convertNonVite","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","hasPlugin","plugins","some","p","plugin","build","addBuildTarget","serve","addServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","testTarget","formatFiles","runTasksInSerial"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TargetConfiguration, Tree } from '@nx/devkit';
|
|
2
|
+
import { ViteConfigurationGeneratorSchema } from '../schema';
|
|
3
|
+
export declare function convertNonVite(tree: Tree, schema: ViteConfigurationGeneratorSchema, projectRoot: string, projectType: string, targets: {
|
|
4
|
+
[targetName: string]: TargetConfiguration<any>;
|
|
5
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "convertNonVite", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: function() {
|
|
5
|
+
return convertNonVite;
|
|
6
|
+
}
|
|
7
|
+
});
|
|
8
|
+
const _devkit = require("@nx/devkit");
|
|
9
|
+
const _findviteconfig = require("../../../utils/find-vite-config");
|
|
10
|
+
const _generatorutils = require("../../../utils/generator-utils");
|
|
11
|
+
async function convertNonVite(tree, schema, projectRoot, projectType, targets) {
|
|
12
|
+
// Check if it has vite
|
|
13
|
+
const hasViteConfig = (0, _findviteconfig.findViteConfig)(tree, projectRoot);
|
|
14
|
+
const hasIndexHtmlAtRoot = tree.exists((0, _devkit.joinPathFragments)(projectRoot, 'index.html'));
|
|
15
|
+
// Check if it has webpack
|
|
16
|
+
const hasWebpackConfig = (0, _findviteconfig.findWebpackConfig)(tree, projectRoot);
|
|
17
|
+
if (hasWebpackConfig) {
|
|
18
|
+
if (projectType === 'application') {
|
|
19
|
+
(0, _generatorutils.moveAndEditIndexHtml)(tree, schema);
|
|
20
|
+
}
|
|
21
|
+
(0, _generatorutils.deleteWebpackConfig)(tree, projectRoot, hasWebpackConfig);
|
|
22
|
+
(0, _generatorutils.editTsConfig)(tree, schema);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (projectType === 'application' && hasViteConfig && hasIndexHtmlAtRoot && !hasWebpackConfig) {
|
|
26
|
+
throw new Error(`The project ${schema.project} is already configured to use Vite.`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (projectType === 'library' && hasViteConfig) {
|
|
30
|
+
// continue anyway - it could need to be updated - only update vite.config.ts in any case
|
|
31
|
+
(0, _generatorutils.editTsConfig)(tree, schema);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Does the project have js executors?
|
|
35
|
+
const { supported: jsTargetName, unsupported } = (0, _generatorutils.findExistingJsBuildTargetInProject)(targets);
|
|
36
|
+
if (jsTargetName) {
|
|
37
|
+
(0, _generatorutils.editTsConfig)(tree, schema);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (unsupported) {
|
|
41
|
+
throw new Error(`
|
|
42
|
+
Nx cannot convert your project to use vite.
|
|
43
|
+
Please try again with a different project.
|
|
44
|
+
`);
|
|
45
|
+
}
|
|
46
|
+
// If it's a library, it's most possible it's non-buildable
|
|
47
|
+
// So fix the tsconfig and return, to continue with the rest of the setup
|
|
48
|
+
if (projectType === 'library' && !hasViteConfig && !hasWebpackConfig && !jsTargetName) {
|
|
49
|
+
(0, _generatorutils.editTsConfig)(tree, schema);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The project is an app.
|
|
54
|
+
* The project has no js executors, no webpack config, no vite config.
|
|
55
|
+
* We did not find any configuration that hints the project can
|
|
56
|
+
* definitely be converted.
|
|
57
|
+
* So, we should warn the user about it.
|
|
58
|
+
* They can choose whether to convert it or not
|
|
59
|
+
*/ await (0, _generatorutils.handleUnknownConfiguration)(schema.project);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=convert-non-vite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/vite/src/generators/configuration/lib/convert-non-vite.ts"],"sourcesContent":["import {\n TargetConfiguration,\n Tree,\n joinPathFragments,\n logger,\n} from '@nx/devkit';\nimport {\n findViteConfig,\n findWebpackConfig,\n} from '../../../utils/find-vite-config';\nimport { ViteConfigurationGeneratorSchema } from '../schema';\nimport {\n deleteWebpackConfig,\n editTsConfig,\n findExistingJsBuildTargetInProject,\n handleUnknownConfiguration,\n moveAndEditIndexHtml,\n} from '../../../utils/generator-utils';\n\nexport async function convertNonVite(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema,\n projectRoot: string,\n projectType: string,\n targets: {\n [targetName: string]: TargetConfiguration<any>;\n }\n) {\n // Check if it has vite\n const hasViteConfig = findViteConfig(tree, projectRoot);\n const hasIndexHtmlAtRoot = tree.exists(\n joinPathFragments(projectRoot, 'index.html')\n );\n\n // Check if it has webpack\n const hasWebpackConfig = findWebpackConfig(tree, projectRoot);\n if (hasWebpackConfig) {\n if (projectType === 'application') {\n moveAndEditIndexHtml(tree, schema);\n }\n deleteWebpackConfig(tree, projectRoot, hasWebpackConfig);\n editTsConfig(tree, schema);\n return;\n }\n\n if (\n projectType === 'application' &&\n hasViteConfig &&\n hasIndexHtmlAtRoot &&\n !hasWebpackConfig\n ) {\n throw new Error(\n `The project ${schema.project} is already configured to use Vite.`\n );\n return;\n }\n\n if (projectType === 'library' && hasViteConfig) {\n // continue anyway - it could need to be updated - only update vite.config.ts in any case\n editTsConfig(tree, schema);\n return;\n }\n\n // Does the project have js executors?\n const { supported: jsTargetName, unsupported } =\n findExistingJsBuildTargetInProject(targets);\n if (jsTargetName) {\n editTsConfig(tree, schema);\n return;\n }\n\n if (unsupported) {\n throw new Error(`\n Nx cannot convert your project to use vite.\n Please try again with a different project.\n `);\n }\n\n // If it's a library, it's most possible it's non-buildable\n // So fix the tsconfig and return, to continue with the rest of the setup\n if (\n projectType === 'library' &&\n !hasViteConfig &&\n !hasWebpackConfig &&\n !jsTargetName\n ) {\n editTsConfig(tree, schema);\n return;\n }\n\n /**\n * The project is an app.\n * The project has no js executors, no webpack config, no vite config.\n * We did not find any configuration that hints the project can\n * definitely be converted.\n * So, we should warn the user about it.\n * They can choose whether to convert it or not\n */\n await handleUnknownConfiguration(schema.project);\n}\n"],"names":["convertNonVite","tree","schema","projectRoot","projectType","targets","hasViteConfig","findViteConfig","hasIndexHtmlAtRoot","exists","joinPathFragments","hasWebpackConfig","findWebpackConfig","moveAndEditIndexHtml","deleteWebpackConfig","editTsConfig","Error","project","supported","jsTargetName","unsupported","findExistingJsBuildTargetInProject","handleUnknownConfiguration"],"mappings":";+BAmBsBA;;;eAAAA;;;wBAdf;gCAIA;gCAQA;AAEA,eAAeA,eACpBC,IAAU,EACVC,MAAwC,EACxCC,WAAmB,EACnBC,WAAmB,EACnBC,OAEC;IAED,uBAAuB;IACvB,MAAMC,gBAAgBC,IAAAA,8BAAc,EAACN,MAAME;IAC3C,MAAMK,qBAAqBP,KAAKQ,MAAM,CACpCC,IAAAA,yBAAiB,EAACP,aAAa;IAGjC,0BAA0B;IAC1B,MAAMQ,mBAAmBC,IAAAA,iCAAiB,EAACX,MAAME;IACjD,IAAIQ,kBAAkB;QACpB,IAAIP,gBAAgB,eAAe;YACjCS,IAAAA,oCAAoB,EAACZ,MAAMC;QAC7B;QACAY,IAAAA,mCAAmB,EAACb,MAAME,aAAaQ;QACvCI,IAAAA,4BAAY,EAACd,MAAMC;QACnB;IACF;IAEA,IACEE,gBAAgB,iBAChBE,iBACAE,sBACA,CAACG,kBACD;QACA,MAAM,IAAIK,MACR,CAAC,YAAY,EAAEd,OAAOe,OAAO,CAAC,mCAAmC,CAAC;QAEpE;IACF;IAEA,IAAIb,gBAAgB,aAAaE,eAAe;QAC9C,yFAAyF;QACzFS,IAAAA,4BAAY,EAACd,MAAMC;QACnB;IACF;IAEA,sCAAsC;IACtC,MAAM,EAAEgB,WAAWC,YAAY,EAAEC,WAAW,EAAE,GAC5CC,IAAAA,kDAAkC,EAAChB;IACrC,IAAIc,cAAc;QAChBJ,IAAAA,4BAAY,EAACd,MAAMC;QACnB;IACF;IAEA,IAAIkB,aAAa;QACf,MAAM,IAAIJ,MAAM,CAAC;;;IAGjB,CAAC;IACH;IAEA,2DAA2D;IAC3D,yEAAyE;IACzE,IACEZ,gBAAgB,aAChB,CAACE,iBACD,CAACK,oBACD,CAACQ,cACD;QACAJ,IAAAA,4BAAY,EAACd,MAAMC;QACnB;IACF;IAEA;;;;;;;GAOC,GACD,MAAMoB,IAAAA,0CAA0B,EAACpB,OAAOe,OAAO;AACjD"}
|
|
@@ -6,9 +6,6 @@ export interface ViteConfigurationGeneratorSchema {
|
|
|
6
6
|
includeVitest?: boolean;
|
|
7
7
|
inSourceTests?: boolean;
|
|
8
8
|
includeLib?: boolean;
|
|
9
|
-
buildTarget?: string;
|
|
10
|
-
serveTarget?: string;
|
|
11
|
-
testTarget?: string;
|
|
12
9
|
skipFormat?: boolean;
|
|
13
10
|
testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
|
|
14
11
|
addPlugin?: boolean;
|
|
@@ -44,18 +44,6 @@
|
|
|
44
44
|
"default": false,
|
|
45
45
|
"hidden": true
|
|
46
46
|
},
|
|
47
|
-
"buildTarget": {
|
|
48
|
-
"type": "string",
|
|
49
|
-
"description": "The build target of the project to be transformed to use the @nx/vite:build executor."
|
|
50
|
-
},
|
|
51
|
-
"serveTarget": {
|
|
52
|
-
"type": "string",
|
|
53
|
-
"description": "The serve target of the project to be transformed to use the @nx/vite:dev-server and @nx/vite:preview-server executors."
|
|
54
|
-
},
|
|
55
|
-
"testTarget": {
|
|
56
|
-
"type": "string",
|
|
57
|
-
"description": "The test target of the project to be transformed to use the @nx/vite:test executor."
|
|
58
|
-
},
|
|
59
47
|
"skipFormat": {
|
|
60
48
|
"description": "Skip formatting files.",
|
|
61
49
|
"type": "boolean",
|
|
@@ -45,8 +45,8 @@ async function vitestGeneratorInternal(tree, schema, hasPlugin = false) {
|
|
|
45
45
|
const nxJson = (0, _devkit.readNxJson)(tree);
|
|
46
46
|
const hasPluginCheck = (_nxJson_plugins = nxJson.plugins) == null ? void 0 : _nxJson_plugins.some((p)=>(typeof p === 'string' ? p === '@nx/vite/plugin' : p.plugin === '@nx/vite/plugin') || hasPlugin);
|
|
47
47
|
if (!hasPluginCheck) {
|
|
48
|
-
var _schema_testTarget
|
|
49
|
-
const testTarget = (
|
|
48
|
+
var _schema_testTarget;
|
|
49
|
+
const testTarget = (_schema_testTarget = schema.testTarget) != null ? _schema_testTarget : 'test';
|
|
50
50
|
(0, _generatorutils.addOrChangeTestTarget)(tree, schema, testTarget);
|
|
51
51
|
}
|
|
52
52
|
if (!schema.skipViteConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n offsetFromRoot,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n findExistingTargetsInProject,\n} from '../../utils/generator-utils';\nimport { VitestGeneratorSchema } from './schema';\n\nimport initGenerator from '../init/init';\nimport {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\n\nimport { addTsLibDependencies, initGenerator as jsInitGenerator } from '@nx/js';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\n\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n const tasks: GeneratorCallback[] = [];\n\n const { targets, root, projectType } = readProjectConfiguration(\n tree,\n schema.project\n );\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget =\n schema.testTarget ??\n findExistingTargetsInProject(targets).validFoundTargetName.test ??\n 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [`import react from '@vitejs/plugin-react'`],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n if (options.inSourceTests) {\n const tsconfigLibPath = joinPathFragments(projectRoot, 'tsconfig.lib.json');\n const tsconfigAppPath = joinPathFragments(projectRoot, 'tsconfig.app.json');\n if (tree.exists(tsconfigLibPath)) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n return json;\n }\n );\n } else if (tree.exists(tsconfigAppPath)) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.app.json'),\n (json) => {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n return json;\n }\n );\n }\n\n addTsLibDependencies(tree);\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n offsetFromRoot: offsetFromRoot(projectRoot),\n });\n}\n\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","nxJson","tasks","targets","root","projectType","readProjectConfiguration","project","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","findExistingTargetsInProject","validFoundTargetName","test","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","formatFiles","runTasksInSerial","options","projectRoot","exists","joinPathFragments","updateJson","json","compilerOptions","types","includes","references","r","path","tsconfigLibPath","tsconfigAppPath","addTsLibDependencies","generateFiles","join","__dirname","tmpl","offsetFromRoot","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n offsetFromRoot,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n} from '../../utils/generator-utils';\nimport { VitestGeneratorSchema } from './schema';\n\nimport initGenerator from '../init/init';\nimport {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\n\nimport { addTsLibDependencies, initGenerator as jsInitGenerator } from '@nx/js';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\n\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n const tasks: GeneratorCallback[] = [];\n\n const { targets, root, projectType } = readProjectConfiguration(\n tree,\n schema.project\n );\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget = schema.testTarget ?? 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [`import react from '@vitejs/plugin-react'`],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n if (options.inSourceTests) {\n const tsconfigLibPath = joinPathFragments(projectRoot, 'tsconfig.lib.json');\n const tsconfigAppPath = joinPathFragments(projectRoot, 'tsconfig.app.json');\n if (tree.exists(tsconfigLibPath)) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n return json;\n }\n );\n } else if (tree.exists(tsconfigAppPath)) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.app.json'),\n (json) => {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n return json;\n }\n );\n }\n\n addTsLibDependencies(tree);\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string\n) {\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n offsetFromRoot: offsetFromRoot(projectRoot),\n });\n}\n\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","nxJson","tasks","targets","root","projectType","readProjectConfiguration","project","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","formatFiles","runTasksInSerial","options","projectRoot","exists","joinPathFragments","updateJson","json","compilerOptions","types","includes","references","r","path","tsconfigLibPath","tsconfigAppPath","addTsLibDependencies","generateFiles","join","__dirname","tmpl","offsetFromRoot","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"mappings":"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"}
|
|
@@ -8,12 +8,13 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
const _devkit = require("@nx/devkit");
|
|
9
9
|
const _executoroptionsutils = require("@nx/devkit/src/generators/executor-options-utils");
|
|
10
10
|
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
11
|
+
const _findviteconfig = require("../../utils/find-vite-config");
|
|
11
12
|
function update(tree) {
|
|
12
13
|
const projects = (0, _devkit.getProjects)(tree);
|
|
13
14
|
(0, _executoroptionsutils.forEachExecutorOptions)(tree, '@nx/vite:build', (options, projectName)=>{
|
|
14
15
|
var _oldTsConfigPathPlugin__importClause_name, _oldTsConfigPathPlugin__importClause, _oldTsConfigPathPlugin_;
|
|
15
16
|
const projectConfig = projects.get(projectName);
|
|
16
|
-
const config = options.configFile || findViteConfig(tree, projectConfig.root);
|
|
17
|
+
const config = options.configFile || (0, _findviteconfig.findViteConfig)(tree, projectConfig.root);
|
|
17
18
|
if (!config || !tree.exists(config)) {
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
@@ -34,20 +35,5 @@ function update(tree) {
|
|
|
34
35
|
tree.write(config, withImportChange);
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
|
-
function findViteConfig(tree, searchRoot) {
|
|
38
|
-
const allowsExt = [
|
|
39
|
-
'js',
|
|
40
|
-
'mjs',
|
|
41
|
-
'ts',
|
|
42
|
-
'cjs',
|
|
43
|
-
'mts',
|
|
44
|
-
'cts'
|
|
45
|
-
];
|
|
46
|
-
for (const ext of allowsExt){
|
|
47
|
-
if (tree.exists((0, _devkit.joinPathFragments)(searchRoot, `vite.config.${ext}`))) {
|
|
48
|
-
return (0, _devkit.joinPathFragments)(searchRoot, `vite.config.${ext}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
38
|
|
|
53
39
|
//# sourceMappingURL=change-ts-paths-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.ts"],"sourcesContent":["import { Tree, getProjects, joinPathFragments } from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { tsquery } from '@phenomnomnominal/tsquery';\n\nexport default function update(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n\n const configContents = tree.read(config, 'utf-8');\n\n const oldTsConfigPathPlugin =\n tsquery.query(\n configContents,\n 'ImportDeclaration:has(StringLiteral[value=\"vite-tsconfig-paths\"])'\n ) ?? [];\n\n if (oldTsConfigPathPlugin.length === 0) {\n return;\n }\n\n const importName =\n oldTsConfigPathPlugin[0]?.['importClause']?.name?.text ??\n 'viteTsConfigPaths';\n const updatedContent = tsquery.replace(\n configContents,\n `PropertyAssignment:has(Identifier[name=\"plugins\"]) CallExpression:has(Identifier[name=\"${importName}\"])`,\n () => {\n return `nxViteTsPaths()`;\n }\n );\n\n const withImportChange = tsquery.replace(\n updatedContent,\n 'ImportDeclaration:has(StringLiteral[value=\"vite-tsconfig-paths\"])',\n () => {\n return \"import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\";\n }\n );\n\n tree.write(config, withImportChange);\n }\n );\n}\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-16-6-0-change-ts-paths-plugin/change-ts-paths-plugin.ts"],"sourcesContent":["import { Tree, getProjects, joinPathFragments } from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport { findViteConfig } from '../../utils/find-vite-config';\n\nexport default function update(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n\n const configContents = tree.read(config, 'utf-8');\n\n const oldTsConfigPathPlugin =\n tsquery.query(\n configContents,\n 'ImportDeclaration:has(StringLiteral[value=\"vite-tsconfig-paths\"])'\n ) ?? [];\n\n if (oldTsConfigPathPlugin.length === 0) {\n return;\n }\n\n const importName =\n oldTsConfigPathPlugin[0]?.['importClause']?.name?.text ??\n 'viteTsConfigPaths';\n const updatedContent = tsquery.replace(\n configContents,\n `PropertyAssignment:has(Identifier[name=\"plugins\"]) CallExpression:has(Identifier[name=\"${importName}\"])`,\n () => {\n return `nxViteTsPaths()`;\n }\n );\n\n const withImportChange = tsquery.replace(\n updatedContent,\n 'ImportDeclaration:has(StringLiteral[value=\"vite-tsconfig-paths\"])',\n () => {\n return \"import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\";\n }\n );\n\n tree.write(config, withImportChange);\n }\n );\n}\n"],"names":["update","tree","projects","getProjects","forEachExecutorOptions","options","projectName","oldTsConfigPathPlugin","projectConfig","get","config","configFile","findViteConfig","root","exists","configContents","read","tsquery","query","length","importName","name","text","updatedContent","replace","withImportChange","write"],"mappings":";+BAMA;;;eAAwBA;;;wBAN6B;sCACd;yBAEf;gCACO;AAEhB,SAASA,OAAOC,IAAU;IACvC,MAAMC,WAAWC,IAAAA,mBAAW,EAACF;IAC7BG,IAAAA,4CAAsB,EACpBH,MACA,kBACA,CAACI,SAASC;YAqBNC,2CAAAA,sCAAAA;QApBF,MAAMC,gBAAgBN,SAASO,GAAG,CAACH;QACnC,MAAMI,SACJL,QAAQM,UAAU,IAAIC,IAAAA,8BAAc,EAACX,MAAMO,cAAcK,IAAI;QAC/D,IAAI,CAACH,UAAU,CAACT,KAAKa,MAAM,CAACJ,SAAS;YACnC;QACF;QAEA,MAAMK,iBAAiBd,KAAKe,IAAI,CAACN,QAAQ;YAGvCO;QADF,MAAMV,wBACJU,CAAAA,iBAAAA,gBAAO,CAACC,KAAK,CACXH,gBACA,gFAFFE,iBAGK,EAAE;QAET,IAAIV,sBAAsBY,MAAM,KAAK,GAAG;YACtC;QACF;YAGEZ;QADF,MAAMa,aACJb,CAAAA,kDAAAA,0BAAAA,qBAAqB,CAAC,EAAE,sBAAxBA,uCAAAA,uBAA0B,CAAC,eAAe,sBAA1CA,4CAAAA,qCAA4Cc,IAAI,qBAAhDd,0CAAkDe,IAAI,YAAtDf,iDACA;QACF,MAAMgB,iBAAiBN,gBAAO,CAACO,OAAO,CACpCT,gBACA,CAAC,uFAAuF,EAAEK,WAAW,GAAG,CAAC,EACzG;YACE,OAAO,CAAC,eAAe,CAAC;QAC1B;QAGF,MAAMK,mBAAmBR,gBAAO,CAACO,OAAO,CACtCD,gBACA,qEACA;YACE,OAAO;QACT;QAGFtB,KAAKyB,KAAK,CAAChB,QAAQe;IACrB;AAEJ"}
|
|
@@ -22,13 +22,14 @@ const _editbuildconfig = require("./lib/edit-build-config");
|
|
|
22
22
|
const _edittestconfig = require("./lib/edit-test-config");
|
|
23
23
|
const _addfilereplacements = require("./lib/add-file-replacements");
|
|
24
24
|
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
25
|
+
const _findviteconfig = require("../../utils/find-vite-config");
|
|
25
26
|
const ts = require("typescript");
|
|
26
27
|
async function updateBuildDir(tree) {
|
|
27
28
|
const projects = (0, _devkit.getProjects)(tree);
|
|
28
29
|
(0, _executoroptionsutils.forEachExecutorOptions)(tree, '@nx/vite:build', (options, projectName, targetName)=>{
|
|
29
30
|
var _options_fileReplacements;
|
|
30
31
|
const projectConfig = projects.get(projectName);
|
|
31
|
-
const config = options.configFile || findViteConfig(tree, projectConfig.root);
|
|
32
|
+
const config = options.configFile || (0, _findviteconfig.findViteConfig)(tree, projectConfig.root);
|
|
32
33
|
if (!config || !tree.exists(config)) {
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
@@ -42,21 +43,6 @@ async function updateBuildDir(tree) {
|
|
|
42
43
|
});
|
|
43
44
|
await (0, _devkit.formatFiles)(tree);
|
|
44
45
|
}
|
|
45
|
-
function findViteConfig(tree, searchRoot) {
|
|
46
|
-
const allowsExt = [
|
|
47
|
-
'js',
|
|
48
|
-
'mjs',
|
|
49
|
-
'ts',
|
|
50
|
-
'cjs',
|
|
51
|
-
'mts',
|
|
52
|
-
'cts'
|
|
53
|
-
];
|
|
54
|
-
for (const ext of allowsExt){
|
|
55
|
-
if (tree.exists((0, _devkit.joinPathFragments)(searchRoot, `vite.config.${ext}`))) {
|
|
56
|
-
return (0, _devkit.joinPathFragments)(searchRoot, `vite.config.${ext}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
46
|
function getConfigNode(configFileContents) {
|
|
61
47
|
var _tsquery_query, _tsquery_query1;
|
|
62
48
|
if (!configFileContents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-17-2-0/update-vite-config.ts"],"sourcesContent":["import {\n Tree,\n formatFiles,\n getProjects,\n joinPathFragments,\n logger,\n} from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { updateBuildOutDirAndRoot } from './lib/edit-build-config';\nimport { updateTestConfig } from './lib/edit-test-config';\nimport { addFileReplacements } from './lib/add-file-replacements';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\n\nexport default async function updateBuildDir(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName, targetName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n let configContents = tree.read(config, 'utf-8');\n\n configContents = updateBuildOutDirAndRoot(\n options,\n configContents,\n projectConfig,\n targetName,\n tree,\n projectName,\n config\n );\n\n configContents = updateTestConfig(configContents, projectConfig, config);\n\n if (options['fileReplacements']?.length > 0) {\n configContents = addFileReplacements(\n configContents,\n options['fileReplacements'],\n config\n );\n }\n\n tree.write(config, configContents);\n }\n );\n\n await formatFiles(tree);\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-17-2-0/update-vite-config.ts"],"sourcesContent":["import {\n Tree,\n formatFiles,\n getProjects,\n joinPathFragments,\n logger,\n} from '@nx/devkit';\nimport { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils';\nimport { ViteBuildExecutorOptions } from '../../executors/build/schema';\nimport { updateBuildOutDirAndRoot } from './lib/edit-build-config';\nimport { updateTestConfig } from './lib/edit-test-config';\nimport { addFileReplacements } from './lib/add-file-replacements';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\nimport { findViteConfig } from '../../utils/find-vite-config';\n\nexport default async function updateBuildDir(tree: Tree) {\n const projects = getProjects(tree);\n forEachExecutorOptions<ViteBuildExecutorOptions>(\n tree,\n '@nx/vite:build',\n (options, projectName, targetName) => {\n const projectConfig = projects.get(projectName);\n const config =\n options.configFile || findViteConfig(tree, projectConfig.root);\n if (!config || !tree.exists(config)) {\n return;\n }\n let configContents = tree.read(config, 'utf-8');\n\n configContents = updateBuildOutDirAndRoot(\n options,\n configContents,\n projectConfig,\n targetName,\n tree,\n projectName,\n config\n );\n\n configContents = updateTestConfig(configContents, projectConfig, config);\n\n if (options['fileReplacements']?.length > 0) {\n configContents = addFileReplacements(\n configContents,\n options['fileReplacements'],\n config\n );\n }\n\n tree.write(config, configContents);\n }\n );\n\n await formatFiles(tree);\n}\n\nexport function getConfigNode(configFileContents: string): ts.Node | undefined {\n if (!configFileContents) {\n return;\n }\n let configNode = tsquery.query(\n configFileContents,\n `ObjectLiteralExpression`\n )?.[0];\n\n const arrowFunctionReturnStatement = tsquery.query(\n configFileContents,\n `ArrowFunction Block ReturnStatement ObjectLiteralExpression`\n )?.[0];\n\n if (arrowFunctionReturnStatement) {\n configNode = arrowFunctionReturnStatement;\n }\n\n return configNode;\n}\n\nexport function notFoundWarning(configPath: string) {\n logger.warn(`\n Could not migrate your ${configPath} file.\n Please add the build.outDir and root options in your ${configPath} file.\n You can find more information on how to configure vite for Nx here:\n \n https://nx.dev/recipes/vite/configure-vite\n `);\n}\n"],"names":["updateBuildDir","getConfigNode","notFoundWarning","ts","tree","projects","getProjects","forEachExecutorOptions","options","projectName","targetName","projectConfig","get","config","configFile","findViteConfig","root","exists","configContents","read","updateBuildOutDirAndRoot","updateTestConfig","length","addFileReplacements","write","formatFiles","configFileContents","tsquery","configNode","query","arrowFunctionReturnStatement","configPath","logger","warn"],"mappings":";;;;;;;;IAgBA,OAuCC;eAvC6BA;;IAyCdC,aAAa;eAAbA;;IAqBAC,eAAe;eAAfA;;;wBAxET;sCACgC;iCAEE;gCACR;qCACG;yBACZ;gCAEO;AAD/B,MAAOC,aAAa;AAGL,eAAeH,eAAeI,IAAU;IACrD,MAAMC,WAAWC,IAAAA,mBAAW,EAACF;IAC7BG,IAAAA,4CAAsB,EACpBH,MACA,kBACA,CAACI,SAASC,aAAaC;YAqBjBF;QApBJ,MAAMG,gBAAgBN,SAASO,GAAG,CAACH;QACnC,MAAMI,SACJL,QAAQM,UAAU,IAAIC,IAAAA,8BAAc,EAACX,MAAMO,cAAcK,IAAI;QAC/D,IAAI,CAACH,UAAU,CAACT,KAAKa,MAAM,CAACJ,SAAS;YACnC;QACF;QACA,IAAIK,iBAAiBd,KAAKe,IAAI,CAACN,QAAQ;QAEvCK,iBAAiBE,IAAAA,yCAAwB,EACvCZ,SACAU,gBACAP,eACAD,YACAN,MACAK,aACAI;QAGFK,iBAAiBG,IAAAA,gCAAgB,EAACH,gBAAgBP,eAAeE;QAEjE,IAAIL,EAAAA,4BAAAA,OAAO,CAAC,mBAAmB,qBAA3BA,0BAA6Bc,MAAM,IAAG,GAAG;YAC3CJ,iBAAiBK,IAAAA,wCAAmB,EAClCL,gBACAV,OAAO,CAAC,mBAAmB,EAC3BK;QAEJ;QAEAT,KAAKoB,KAAK,CAACX,QAAQK;IACrB;IAGF,MAAMO,IAAAA,mBAAW,EAACrB;AACpB;AAEO,SAASH,cAAcyB,kBAA0B;QAIrCC,gBAKoBA;IARrC,IAAI,CAACD,oBAAoB;QACvB;IACF;IACA,IAAIE,cAAaD,iBAAAA,gBAAO,CAACE,KAAK,CAC5BH,oBACA,CAAC,uBAAuB,CAAC,sBAFVC,cAGd,CAAC,EAAE;IAEN,MAAMG,gCAA+BH,kBAAAA,gBAAO,CAACE,KAAK,CAChDH,oBACA,CAAC,2DAA2D,CAAC,sBAF1BC,eAGlC,CAAC,EAAE;IAEN,IAAIG,8BAA8B;QAChCF,aAAaE;IACf;IAEA,OAAOF;AACT;AAEO,SAAS1B,gBAAgB6B,UAAkB;IAChDC,cAAM,CAACC,IAAI,CAAC,CAAC;yBACU,EAAEF,WAAW;uDACiB,EAAEA,WAAW;;;;EAIlE,CAAC;AACH"}
|