@nx/vite 17.2.0 → 17.2.2
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/build/build.impl.d.ts +5 -0
- package/src/executors/build/build.impl.js +6 -2
- package/src/executors/build/build.impl.js.map +1 -1
- package/src/executors/dev-server/dev-server.impl.js +39 -8
- package/src/executors/dev-server/dev-server.impl.js.map +1 -1
- package/src/executors/preview-server/preview-server.impl.js +35 -11
- package/src/executors/preview-server/preview-server.impl.js.map +1 -1
- package/src/executors/test/lib/utils.js +1 -4
- package/src/executors/test/lib/utils.js.map +1 -1
- package/src/executors/test/vitest.impl.js +2 -0
- package/src/executors/test/vitest.impl.js.map +1 -1
- package/src/migrations/update-17-2-0/lib/add-file-replacements.d.ts +1 -1
- package/src/migrations/update-17-2-0/lib/add-file-replacements.js +10 -4
- package/src/migrations/update-17-2-0/lib/add-file-replacements.js.map +1 -1
- package/src/migrations/update-17-2-0/lib/edit-build-config.d.ts +1 -1
- package/src/migrations/update-17-2-0/lib/edit-build-config.js +36 -26
- package/src/migrations/update-17-2-0/lib/edit-build-config.js.map +1 -1
- package/src/migrations/update-17-2-0/lib/edit-test-config.d.ts +1 -1
- package/src/migrations/update-17-2-0/lib/edit-test-config.js +8 -2
- package/src/migrations/update-17-2-0/lib/edit-test-config.js.map +1 -1
- package/src/migrations/update-17-2-0/update-vite-config.d.ts +3 -0
- package/src/migrations/update-17-2-0/update-vite-config.js +40 -6
- package/src/migrations/update-17-2-0/update-vite-config.js.map +1 -1
- package/src/utils/options-utils.d.ts +2 -5
- package/src/utils/options-utils.js +6 -7
- package/src/utils/options-utils.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/vite",
|
|
3
|
-
"version": "17.2.
|
|
3
|
+
"version": "17.2.2",
|
|
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": "17.2.
|
|
32
|
+
"@nx/devkit": "17.2.2",
|
|
33
33
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
34
34
|
"@swc/helpers": "~0.5.0",
|
|
35
35
|
"enquirer": "~2.3.6",
|
|
36
|
-
"@nx/js": "17.2.
|
|
36
|
+
"@nx/js": "17.2.2",
|
|
37
37
|
"tsconfig-paths": "^4.1.2",
|
|
38
|
-
"@nrwl/vite": "17.2.
|
|
38
|
+
"@nrwl/vite": "17.2.2"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"vite": "^5.0.0",
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
2
|
import { ViteBuildExecutorOptions } from './schema';
|
|
3
|
+
import { BuildOptions } from 'vite';
|
|
3
4
|
export declare function viteBuildExecutor(options: Record<string, any> & ViteBuildExecutorOptions, context: ExecutorContext): AsyncGenerator<{
|
|
4
5
|
success: boolean;
|
|
5
6
|
} | {
|
|
6
7
|
success: boolean;
|
|
7
8
|
outfile: string;
|
|
8
9
|
}, void, undefined>;
|
|
10
|
+
export declare function getBuildExtraArgs(options: ViteBuildExecutorOptions): Promise<{
|
|
11
|
+
buildOptions: BuildOptions;
|
|
12
|
+
otherOptions: Record<string, any>;
|
|
13
|
+
}>;
|
|
9
14
|
export default viteBuildExecutor;
|
|
@@ -9,6 +9,9 @@ _export(exports, {
|
|
|
9
9
|
viteBuildExecutor: function() {
|
|
10
10
|
return viteBuildExecutor;
|
|
11
11
|
},
|
|
12
|
+
getBuildExtraArgs: function() {
|
|
13
|
+
return getBuildExtraArgs;
|
|
14
|
+
},
|
|
12
15
|
default: function() {
|
|
13
16
|
return _default;
|
|
14
17
|
}
|
|
@@ -23,13 +26,14 @@ const _asynciterable = require("@nx/devkit/src/utils/async-iterable");
|
|
|
23
26
|
const _executorutils = require("../../utils/executor-utils");
|
|
24
27
|
async function* viteBuildExecutor(options, context) {
|
|
25
28
|
var _resolved_config_build, _resolved_config;
|
|
29
|
+
process.env.VITE_CJS_IGNORE_WARNING = 'true';
|
|
26
30
|
// Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
|
|
27
31
|
const { mergeConfig, build, loadConfigFromFile } = await Function('return import("vite")')();
|
|
28
32
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
29
33
|
(0, _executorutils.createBuildableTsConfig)(projectRoot, options, context);
|
|
30
34
|
const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, options.configFile);
|
|
31
35
|
const root = projectRoot === '.' ? process.cwd() : (0, _path.relative)(context.cwd, (0, _devkit.joinPathFragments)(context.root, projectRoot));
|
|
32
|
-
const { buildOptions, otherOptions } = await
|
|
36
|
+
const { buildOptions, otherOptions } = await getBuildExtraArgs(options);
|
|
33
37
|
var _otherOptions_mode;
|
|
34
38
|
const resolved = await loadConfigFromFile({
|
|
35
39
|
mode: (_otherOptions_mode = otherOptions == null ? void 0 : otherOptions.mode) != null ? _otherOptions_mode : 'production',
|
|
@@ -124,7 +128,7 @@ async function* viteBuildExecutor(options, context) {
|
|
|
124
128
|
};
|
|
125
129
|
}
|
|
126
130
|
}
|
|
127
|
-
async function
|
|
131
|
+
async function getBuildExtraArgs(options) {
|
|
128
132
|
// support passing extra args to vite cli
|
|
129
133
|
const schema = await Promise.resolve().then(()=>require("./schema.json"));
|
|
130
134
|
const extraArgs = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n validateTypes,\n} from '../../utils/executor-utils';\nimport { BuildOptions } from 'vite';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, build, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n createBuildableTsConfig(projectRoot, options, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\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 build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: getProjectTsConfigPath(projectRoot),\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/packages/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n }\n );\n\n builtPackageJson.type = 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\n}\n\nasync function getExtraArgs(options: ViteBuildExecutorOptions): Promise<{\n buildOptions: BuildOptions;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {} as BuildOptions;\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","options","context","resolved","mergeConfig","build","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","process","cwd","relative","joinPathFragments","buildOptions","otherOptions","getExtraArgs","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","getProjectTsConfigPath","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import {\n detectPackageManager,\n ExecutorContext,\n joinPathFragments,\n logger,\n offsetFromRoot,\n stripIndents,\n writeJsonFile,\n} from '@nx/devkit';\nimport {\n getProjectTsConfigPath,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport {\n copyAssets,\n createLockFile,\n createPackageJson,\n getLockFileName,\n} from '@nx/js';\nimport { existsSync, writeFileSync } from 'fs';\nimport { relative, resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\nimport {\n createBuildableTsConfig,\n validateTypes,\n} from '../../utils/executor-utils';\nimport { BuildOptions } from 'vite';\n\nexport async function* viteBuildExecutor(\n options: Record<string, any> & ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, build, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n createBuildableTsConfig(projectRoot, options, context);\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n options.configFile\n );\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n const { buildOptions, otherOptions } = await getBuildExtraArgs(options);\n\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n joinPathFragments(offsetFromRoot(projectRoot), options.outputPath) ??\n resolved?.config?.build?.outDir;\n\n const buildConfig = mergeConfig(\n {\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 build: {\n outDir,\n ...buildOptions,\n },\n ...otherOptions,\n }\n );\n\n if (!options.skipTypeCheck) {\n await validateTypes({\n workspaceRoot: context.root,\n projectRoot: projectRoot,\n tsconfig: getProjectTsConfigPath(projectRoot),\n });\n }\n\n const watcherOrOutput = await build(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // Here, we want the outdir relative to the workspace root.\n // So, we calculate the relative path from the workspace root to the outdir.\n const outDirRelativeToWorkspaceRoot = outDir.replaceAll('../', '');\n const distPackageJson = resolve(\n outDirRelativeToWorkspaceRoot,\n 'package.json'\n );\n\n // Generate a package.json if option has been set.\n if (options.generatePackageJson) {\n if (context.projectGraph.nodes[context.projectName].type !== 'app') {\n logger.warn(\n stripIndents`The project ${context.projectName} is using the 'generatePackageJson' option which is deprecated for library projects. It should only be used for applications.\n For libraries, configure the project to use the '@nx/dependency-checks' ESLint rule instead (https://nx.dev/packages/eslint-plugin/documents/dependency-checks).`\n );\n }\n\n const builtPackageJson = createPackageJson(\n context.projectName,\n context.projectGraph,\n {\n target: context.targetName,\n root: context.root,\n isProduction: !options.includeDevDependenciesInPackageJson, // By default we remove devDependencies since this is a production build.\n }\n );\n\n builtPackageJson.type = 'module';\n\n writeJsonFile(\n `${outDirRelativeToWorkspaceRoot}/package.json`,\n builtPackageJson\n );\n const packageManager = detectPackageManager(context.root);\n\n const lockFile = createLockFile(\n builtPackageJson,\n context.projectGraph,\n packageManager\n );\n writeFileSync(\n `${outDirRelativeToWorkspaceRoot}/${getLockFileName(packageManager)}`,\n lockFile,\n {\n encoding: 'utf-8',\n }\n );\n }\n // For buildable libs, copy package.json if it exists.\n else if (\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: outDirRelativeToWorkspaceRoot,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(outDirRelativeToWorkspaceRoot, fileName);\n yield { success: true, outfile };\n }\n}\n\nexport async function getBuildExtraArgs(\n options: ViteBuildExecutorOptions\n): Promise<{\n buildOptions: BuildOptions;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const buildOptions = {} as BuildOptions;\n const buildSchemaKeys = [\n 'target',\n 'polyfillModulePreload',\n 'modulePreload',\n 'outDir',\n 'assetsDir',\n 'assetsInlineLimit',\n 'cssCodeSplit',\n 'cssTarget',\n 'cssMinify',\n 'sourcemap',\n 'minify',\n 'terserOptions',\n 'rollupOptions',\n 'commonjsOptions',\n 'dynamicImportVarsOptions',\n 'write',\n 'emptyOutDir',\n 'copyPublicDir',\n 'manifest',\n 'lib',\n 'ssr',\n 'ssrManifest',\n 'ssrEmitAssets',\n 'reportCompressedSize',\n 'chunkSizeWarningLimit',\n 'watch',\n ];\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (buildSchemaKeys.includes(key)) {\n buildOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n return {\n buildOptions,\n otherOptions,\n };\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","getBuildExtraArgs","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","build","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","createBuildableTsConfig","viteConfigPath","normalizeViteConfigFilePath","configFile","cwd","relative","joinPathFragments","buildOptions","otherOptions","mode","command","outDir","offsetFromRoot","outputPath","config","buildConfig","skipTypeCheck","validateTypes","workspaceRoot","tsconfig","getProjectTsConfigPath","watcherOrOutput","libraryPackageJson","resolve","rootPackageJson","outDirRelativeToWorkspaceRoot","replaceAll","distPackageJson","generatePackageJson","projectGraph","nodes","type","logger","warn","stripIndents","builtPackageJson","createPackageJson","target","targetName","isProduction","includeDevDependenciesInPackageJson","writeJsonFile","packageManager","detectPackageManager","lockFile","createLockFile","writeFileSync","getLockFileName","encoding","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","schema","extraArgs","key","Object","keys","properties","buildSchemaKeys","includes"],"mappings":";;;;;;;;IA6BuBA,iBAAiB;eAAjBA;;IAkKDC,iBAAiB;eAAjBA;;IA2DtB,OAAiC;eAAjC;;;;wBAlPO;8BAIA;oBAOA;oBACmC;sBACR;+BACE;+BAI7B;AAGA,gBAAgBD,kBACrBE,OAAuD,EACvDC,OAAwB;QAiCtBC,wBAAAA;IA/BFC,QAAQC,GAAG,CAACC,uBAAuB,GAAG;IACtC,yFAAyF;IACzF,MAAM,EAAEC,WAAW,EAAEC,KAAK,EAAEC,kBAAkB,EAAE,GAAG,MAAOC,SACxD;IAEF,MAAMC,cACJT,QAAQU,sBAAsB,CAACC,QAAQ,CAACX,QAAQY,WAAW,CAAC,CAACC,IAAI;IACnEC,IAAAA,sCAAuB,EAACL,aAAaV,SAASC;IAE9C,MAAMe,iBAAiBC,IAAAA,yCAA2B,EAChDhB,QAAQa,IAAI,EACZJ,aACAV,QAAQkB,UAAU;IAEpB,MAAMJ,OACJJ,gBAAgB,MACZP,QAAQgB,GAAG,KACXC,IAAAA,cAAQ,EAACnB,QAAQkB,GAAG,EAAEE,IAAAA,yBAAiB,EAACpB,QAAQa,IAAI,EAAEJ;IAE5D,MAAM,EAAEY,YAAY,EAAEC,YAAY,EAAE,GAAG,MAAMxB,kBAAkBC;QAIrDuB;IAFV,MAAMrB,WAAW,MAAMM,mBACrB;QACEgB,MAAMD,CAAAA,qBAAAA,gCAAAA,aAAcC,IAAI,YAAlBD,qBAAsB;QAC5BE,SAAS;IACX,GACAT;QAIAK;IADF,MAAMK,SACJL,CAAAA,qBAAAA,IAAAA,yBAAiB,EAACM,IAAAA,sBAAc,EAACjB,cAAcV,QAAQ4B,UAAU,aAAjEP,qBACAnB,6BAAAA,mBAAAA,SAAU2B,MAAM,sBAAhB3B,yBAAAA,iBAAkBK,KAAK,qBAAvBL,uBAAyBwB,MAAM;QAMvBxB;IAJV,MAAM4B,cAAcxB,YAClB;QACE,sEAAsE;QACtE,gEAAgE;QAChEQ,MAAMZ,CAAAA,wBAAAA,SAAS2B,MAAM,CAACf,IAAI,YAApBZ,wBAAwBY;QAC9BI,YAAYF;IACd,GACA;QACET,OAAO;YACLmB;WACGJ;OAEFC;IAIP,IAAI,CAACvB,QAAQ+B,aAAa,EAAE;QAC1B,MAAMC,IAAAA,4BAAa,EAAC;YAClBC,eAAehC,QAAQa,IAAI;YAC3BJ,aAAaA;YACbwB,UAAUC,IAAAA,oCAAsB,EAACzB;QACnC;IACF;IAEA,MAAM0B,kBAAkB,MAAM7B,MAAMuB;IAEpC,MAAMO,qBAAqBC,IAAAA,aAAO,EAAC5B,aAAa;IAChD,MAAM6B,kBAAkBD,IAAAA,aAAO,EAACrC,QAAQa,IAAI,EAAE;IAE9C,2DAA2D;IAC3D,4EAA4E;IAC5E,MAAM0B,gCAAgCd,OAAOe,UAAU,CAAC,OAAO;IAC/D,MAAMC,kBAAkBJ,IAAAA,aAAO,EAC7BE,+BACA;IAGF,kDAAkD;IAClD,IAAIxC,QAAQ2C,mBAAmB,EAAE;QAC/B,IAAI1C,QAAQ2C,YAAY,CAACC,KAAK,CAAC5C,QAAQY,WAAW,CAAC,CAACiC,IAAI,KAAK,OAAO;YAClEC,cAAM,CAACC,IAAI,CACTC,IAAAA,oBAAY,CAAA,CAAC,YAAY,EAAEhD,QAAQY,WAAW,CAAC;wKACiH,CAAC;QAErK;QAEA,MAAMqC,mBAAmBC,IAAAA,qBAAiB,EACxClD,QAAQY,WAAW,EACnBZ,QAAQ2C,YAAY,EACpB;YACEQ,QAAQnD,QAAQoD,UAAU;YAC1BvC,MAAMb,QAAQa,IAAI;YAClBwC,cAAc,CAACtD,QAAQuD,mCAAmC;QAC5D;QAGFL,iBAAiBJ,IAAI,GAAG;QAExBU,IAAAA,qBAAa,EACX,CAAC,EAAEhB,8BAA8B,aAAa,CAAC,EAC/CU;QAEF,MAAMO,iBAAiBC,IAAAA,4BAAoB,EAACzD,QAAQa,IAAI;QAExD,MAAM6C,WAAWC,IAAAA,kBAAc,EAC7BV,kBACAjD,QAAQ2C,YAAY,EACpBa;QAEFI,IAAAA,iBAAa,EACX,CAAC,EAAErB,8BAA8B,CAAC,EAAEsB,IAAAA,mBAAe,EAACL,gBAAgB,CAAC,EACrEE,UACA;YACEI,UAAU;QACZ;IAEJ,OAEK,IACH,CAACC,IAAAA,cAAU,EAACtB,oBACZsB,IAAAA,cAAU,EAAC3B,uBACXE,oBAAoBF,oBACpB;QACA,MAAM4B,IAAAA,cAAU,EACd;YACErC,YAAYY;YACZ0B,QAAQ;gBACN;oBACEC,OAAOzD;oBACP0D,QAAQ;oBACRC,MAAM;gBACR;aACD;QACH,GACApE;IAEJ;IAEA,IAAI,QAAQmC,iBAAiB;QAC3B,MAAMkC,WAAWC,IAAAA,kCAAmB,EAAuB,CAAC,EAAEC,IAAI,EAAE;YAClE,IAAIC,UAAU;YACdrC,gBAAgBsC,EAAE,CAAC,SAAS,CAACC;gBAC3B,IAAIA,MAAMC,IAAI,KAAK,SAAS;oBAC1BH,UAAU;gBACZ,OAAO,IAAIE,MAAMC,IAAI,KAAK,SAAS;oBACjCH,UAAU;gBACZ,OAAO,IAAIE,MAAMC,IAAI,KAAK,OAAO;oBAC/BJ,KAAK;wBAAEC;oBAAQ;gBACjB;gBACA,sCAAsC;gBACtC,iDAAiD;gBACjD,IAAI,YAAYE,OAAO;oBACrBA,MAAME,MAAM,CAACC,KAAK;gBACpB;YACF;QACF;QACA,OAAOR;IACT,OAAO;YACyClC,mBAC7BgC;QADjB,MAAMA,SAAShC,CAAAA,mCAAAA,eAAiB,CAAC,SAAS,MAAIA,oCAAAA,oBAAAA,eAAiB,CAAC,EAAE,qBAApBA,kBAAsBgC,MAAM;QAC1E,MAAMW,WAAWX,CAAAA,2BAAAA,WAAAA,MAAQ,CAAC,EAAE,qBAAXA,SAAaW,QAAQ,KAAI;QAC1C,MAAMC,UAAU1C,IAAAA,aAAO,EAACE,+BAA+BuC;QACvD,MAAM;YAAEN,SAAS;YAAMO;QAAQ;IACjC;AACF;AAEO,eAAejF,kBACpBC,OAAiC;IAKjC,yCAAyC;IACzC,MAAMiF,SAAS,MAAM,2BAAA,QAAO;IAC5B,MAAMC,YAAY,CAAC;IACnB,KAAK,MAAMC,OAAOC,OAAOC,IAAI,CAACrF,SAAU;QACtC,IAAI,CAACiF,OAAOK,UAAU,CAACH,IAAI,EAAE;YAC3BD,SAAS,CAACC,IAAI,GAAGnF,OAAO,CAACmF,IAAI;QAC/B;IACF;IAEA,MAAM7D,eAAe,CAAC;IACtB,MAAMiE,kBAAkB;QACtB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IACD,MAAMhE,eAAe,CAAC;IACtB,KAAK,MAAM4D,OAAOC,OAAOC,IAAI,CAACH,WAAY;QACxC,IAAIK,gBAAgBC,QAAQ,CAACL,MAAM;YACjC7D,YAAY,CAAC6D,IAAI,GAAGD,SAAS,CAACC,IAAI;QACpC,OAAO;YACL5D,YAAY,CAAC4D,IAAI,GAAGD,SAAS,CAACC,IAAI;QACpC;IACF;IAEA,OAAO;QACL7D;QACAC;IACF;AACF;MAEA,WAAezB"}
|
|
@@ -20,6 +20,7 @@ const _optionsutils = require("../../utils/options-utils");
|
|
|
20
20
|
const _executorutils = require("../../utils/executor-utils");
|
|
21
21
|
const _path = require("path");
|
|
22
22
|
async function* viteDevServerExecutor(options, context) {
|
|
23
|
+
process.env.VITE_CJS_IGNORE_WARNING = 'true';
|
|
23
24
|
// Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
|
|
24
25
|
const { mergeConfig, createServer } = await Function('return import("vite")')();
|
|
25
26
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
@@ -28,11 +29,11 @@ async function* viteDevServerExecutor(options, context) {
|
|
|
28
29
|
// Retrieve the option for the configured buildTarget.
|
|
29
30
|
const buildTargetOptions = (0, _optionsutils.getNxTargetOptions)(options.buildTarget, context);
|
|
30
31
|
const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, buildTargetOptions.configFile);
|
|
31
|
-
const
|
|
32
|
-
var
|
|
32
|
+
const { serverOptions, otherOptions } = await getServerExtraArgs(options);
|
|
33
|
+
var _otherOptions_mode;
|
|
33
34
|
const resolved = await (0, _vite.loadConfigFromFile)({
|
|
34
|
-
mode: (
|
|
35
|
-
command: '
|
|
35
|
+
mode: (_otherOptions_mode = otherOptions == null ? void 0 : otherOptions.mode) != null ? _otherOptions_mode : 'development',
|
|
36
|
+
command: 'serve'
|
|
36
37
|
}, viteConfigPath);
|
|
37
38
|
var _resolved_config_root;
|
|
38
39
|
const serverConfig = mergeConfig({
|
|
@@ -41,8 +42,8 @@ async function* viteDevServerExecutor(options, context) {
|
|
|
41
42
|
root: (_resolved_config_root = resolved.config.root) != null ? _resolved_config_root : root,
|
|
42
43
|
configFile: viteConfigPath
|
|
43
44
|
}, _extends._({
|
|
44
|
-
server: _extends._({}, await (0, _optionsutils.getViteServerOptions)(options, context),
|
|
45
|
-
},
|
|
45
|
+
server: _extends._({}, await (0, _optionsutils.getViteServerOptions)(options, context), serverOptions)
|
|
46
|
+
}, otherOptions));
|
|
46
47
|
try {
|
|
47
48
|
const server = await createServer(serverConfig);
|
|
48
49
|
await runViteDevServer(server);
|
|
@@ -79,7 +80,7 @@ async function runViteDevServer(server) {
|
|
|
79
80
|
process.once('exit', processOnExit);
|
|
80
81
|
}
|
|
81
82
|
const _default = viteDevServerExecutor;
|
|
82
|
-
async function
|
|
83
|
+
async function getServerExtraArgs(options) {
|
|
83
84
|
// support passing extra args to vite cli
|
|
84
85
|
const schema = await Promise.resolve().then(()=>require("./schema.json"));
|
|
85
86
|
const extraArgs = {};
|
|
@@ -88,7 +89,37 @@ async function getExtraArgs(options) {
|
|
|
88
89
|
extraArgs[key] = options[key];
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
+
const serverOptions = {};
|
|
93
|
+
const serverSchemaKeys = [
|
|
94
|
+
'hmr',
|
|
95
|
+
'warmup',
|
|
96
|
+
'watch',
|
|
97
|
+
'middlewareMode',
|
|
98
|
+
'fs',
|
|
99
|
+
'origin',
|
|
100
|
+
'preTransformRequests',
|
|
101
|
+
'sourcemapIgnoreList',
|
|
102
|
+
'port',
|
|
103
|
+
'strictPort',
|
|
104
|
+
'host',
|
|
105
|
+
'https',
|
|
106
|
+
'open',
|
|
107
|
+
'proxy',
|
|
108
|
+
'cors',
|
|
109
|
+
'headers'
|
|
110
|
+
];
|
|
111
|
+
const otherOptions = {};
|
|
112
|
+
for (const key of Object.keys(extraArgs)){
|
|
113
|
+
if (serverSchemaKeys.includes(key)) {
|
|
114
|
+
serverOptions[key] = extraArgs[key];
|
|
115
|
+
} else {
|
|
116
|
+
otherOptions[key] = extraArgs[key];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
serverOptions,
|
|
121
|
+
otherOptions
|
|
122
|
+
};
|
|
92
123
|
}
|
|
93
124
|
|
|
94
125
|
//# sourceMappingURL=dev-server.impl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import { ExecutorContext, joinPathFragments } from '@nx/devkit';\nimport {\n loadConfigFromFile,\n type InlineConfig,\n type ViteDevServer,\n} from 'vite';\n\nimport {\n getNxTargetOptions,\n getViteServerOptions,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\n\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { createBuildableTsConfig } from '../../utils/executor-utils';\nimport { relative } from 'path';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, createServer } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n createBuildableTsConfig(projectRoot, options, context);\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n const
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/executors/dev-server/dev-server.impl.ts"],"sourcesContent":["import { ExecutorContext, joinPathFragments } from '@nx/devkit';\nimport {\n loadConfigFromFile,\n type InlineConfig,\n type ViteDevServer,\n ServerOptions,\n} from 'vite';\n\nimport {\n getNxTargetOptions,\n getViteServerOptions,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\n\nimport { ViteDevServerExecutorOptions } from './schema';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { createBuildableTsConfig } from '../../utils/executor-utils';\nimport { relative } from 'path';\n\nexport async function* viteDevServerExecutor(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): AsyncGenerator<{ success: boolean; baseUrl: string }> {\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, createServer } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n createBuildableTsConfig(projectRoot, options, context);\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n const { serverOptions, otherOptions } = await getServerExtraArgs(options);\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'development',\n command: 'serve',\n },\n viteConfigPath\n );\n\n const serverConfig: InlineConfig = mergeConfig(\n {\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 server: {\n ...(await getViteServerOptions(options, context)),\n ...serverOptions,\n },\n ...otherOptions,\n }\n );\n\n try {\n const server = await createServer(serverConfig);\n await runViteDevServer(server);\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n\nasync function runViteDevServer(server: ViteDevServer): Promise<void> {\n await server.listen();\n\n server.printUrls();\n\n const processOnExit = async () => {\n await server.close();\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n}\n\nexport default viteDevServerExecutor;\n\nasync function getServerExtraArgs(\n options: ViteDevServerExecutorOptions\n): Promise<{\n serverOptions: ServerOptions;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const serverOptions = {} as ServerOptions;\n const serverSchemaKeys = [\n 'hmr',\n 'warmup',\n 'watch',\n 'middlewareMode',\n 'fs',\n 'origin',\n 'preTransformRequests',\n 'sourcemapIgnoreList',\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (serverSchemaKeys.includes(key)) {\n serverOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n return {\n serverOptions,\n otherOptions,\n };\n}\n"],"names":["viteDevServerExecutor","options","context","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","createServer","Function","projectRoot","projectsConfigurations","projects","projectName","root","cwd","relative","joinPathFragments","createBuildableTsConfig","buildTargetOptions","getNxTargetOptions","buildTarget","viteConfigPath","normalizeViteConfigFilePath","configFile","serverOptions","otherOptions","getServerExtraArgs","resolved","loadConfigFromFile","mode","command","serverConfig","config","server","getViteServerOptions","runViteDevServer","resolvedUrls","local","network","success","baseUrl","e","console","error","Promise","resolve","once","listen","printUrls","processOnExit","close","schema","extraArgs","key","Object","keys","properties","serverSchemaKeys","includes"],"mappings":"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"}
|
|
@@ -17,8 +17,10 @@ const _extends = require("@swc/helpers/_/_extends");
|
|
|
17
17
|
const _devkit = require("@nx/devkit");
|
|
18
18
|
const _optionsutils = require("../../utils/options-utils");
|
|
19
19
|
const _path = require("path");
|
|
20
|
+
const _buildimpl = require("../build/build.impl");
|
|
20
21
|
async function* vitePreviewServerExecutor(options, context) {
|
|
21
22
|
var _context_projectsConfigurations_projects_target_project, _resolved_config_build, _resolved_config;
|
|
23
|
+
process.env.VITE_CJS_IGNORE_WARNING = 'true';
|
|
22
24
|
// Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
|
|
23
25
|
const { mergeConfig, preview, loadConfigFromFile } = await Function('return import("vite")')();
|
|
24
26
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
@@ -31,10 +33,11 @@ async function* vitePreviewServerExecutor(options, context) {
|
|
|
31
33
|
// Retrieve the option for the configured buildTarget.
|
|
32
34
|
const buildTargetOptions = (0, _optionsutils.getNxTargetOptions)(options.buildTarget, context);
|
|
33
35
|
const viteConfigPath = (0, _optionsutils.normalizeViteConfigFilePath)(context.root, projectRoot, buildTargetOptions.configFile);
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
+
const { buildOptions, otherOptions: otherOptionsFromBuild } = await (0, _buildimpl.getBuildExtraArgs)(buildTargetOptions);
|
|
37
|
+
const { previewOptions, otherOptions } = await getExtraArgs(options);
|
|
38
|
+
var _otherOptions_mode;
|
|
36
39
|
const resolved = await loadConfigFromFile({
|
|
37
|
-
mode: (
|
|
40
|
+
mode: (_otherOptions_mode = otherOptions == null ? void 0 : otherOptions.mode) != null ? _otherOptions_mode : 'production',
|
|
38
41
|
command: 'build'
|
|
39
42
|
}, viteConfigPath);
|
|
40
43
|
var _options_staticFilePath, _ref;
|
|
@@ -48,20 +51,19 @@ async function* vitePreviewServerExecutor(options, context) {
|
|
|
48
51
|
const mergedOptions = _extends._({}, {
|
|
49
52
|
watch: {}
|
|
50
53
|
}, {
|
|
51
|
-
build: {
|
|
54
|
+
build: _extends._({
|
|
52
55
|
outDir
|
|
53
|
-
}
|
|
54
|
-
}, isCustomBuildTarget ? {} :
|
|
56
|
+
}, isCustomBuildTarget ? {} : buildOptions)
|
|
57
|
+
}, isCustomBuildTarget ? {} : otherOptionsFromBuild, otherOptions, {
|
|
58
|
+
preview: _extends._({}, (0, _optionsutils.getProxyConfig)(context, otherOptions.proxyConfig), previewOptions)
|
|
59
|
+
});
|
|
55
60
|
var _resolved_config_root;
|
|
56
|
-
// Retrieve the server configuration.
|
|
57
61
|
const serverConfig = mergeConfig({
|
|
58
62
|
// This should not be needed as it's going to be set in vite.config.ts
|
|
59
63
|
// but leaving it here in case someone did not migrate correctly
|
|
60
64
|
root: (_resolved_config_root = resolved.config.root) != null ? _resolved_config_root : root,
|
|
61
65
|
configFile: viteConfigPath
|
|
62
|
-
}, _extends._({}, mergedOptions
|
|
63
|
-
preview: (0, _optionsutils.getVitePreviewOptions)(mergedOptions, context)
|
|
64
|
-
}));
|
|
66
|
+
}, _extends._({}, mergedOptions));
|
|
65
67
|
if (serverConfig.mode === 'production') {
|
|
66
68
|
console.warn('WARNING: preview is not meant to be run in production!');
|
|
67
69
|
}
|
|
@@ -139,7 +141,29 @@ async function getExtraArgs(options) {
|
|
|
139
141
|
extraArgs[key] = options[key];
|
|
140
142
|
}
|
|
141
143
|
}
|
|
142
|
-
|
|
144
|
+
const previewOptions = {};
|
|
145
|
+
const previewSchemaKeys = [
|
|
146
|
+
'port',
|
|
147
|
+
'strictPort',
|
|
148
|
+
'host',
|
|
149
|
+
'https',
|
|
150
|
+
'open',
|
|
151
|
+
'proxy',
|
|
152
|
+
'cors',
|
|
153
|
+
'headers'
|
|
154
|
+
];
|
|
155
|
+
const otherOptions = {};
|
|
156
|
+
for (const key of Object.keys(extraArgs)){
|
|
157
|
+
if (previewSchemaKeys.includes(key)) {
|
|
158
|
+
previewOptions[key] = extraArgs[key];
|
|
159
|
+
} else {
|
|
160
|
+
otherOptions[key] = extraArgs[key];
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
previewOptions,
|
|
165
|
+
otherOptions
|
|
166
|
+
};
|
|
143
167
|
}
|
|
144
168
|
|
|
145
169
|
//# sourceMappingURL=preview-server.impl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/executors/preview-server/preview-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n offsetFromRoot,\n parseTargetString,\n runExecutor,\n} from '@nx/devkit';\nimport type { InlineConfig, PreviewServer } from 'vite';\nimport {\n getNxTargetOptions,\n getVitePreviewOptions,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { VitePreviewServerExecutorOptions } from './schema';\nimport { relative } from 'path';\n\nexport async function* vitePreviewServerExecutor(\n options: VitePreviewServerExecutorOptions,\n context: ExecutorContext\n) {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, preview, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const target = parseTargetString(options.buildTarget, context);\n const targetConfiguration =\n context.projectsConfigurations.projects[target.project]?.targets[\n target.target\n ];\n if (!targetConfiguration) {\n throw new Error(`Invalid buildTarget: ${options.buildTarget}`);\n }\n\n const isCustomBuildTarget =\n targetConfiguration.executor !== '@nx/vite:build' &&\n targetConfiguration.executor !== '@nrwl/vite:build';\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n const extraArgs = await getExtraArgs(options);\n const resolved = await loadConfigFromFile(\n {\n mode: extraArgs?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n options.staticFilePath ??\n joinPathFragments(\n offsetFromRoot(projectRoot),\n buildTargetOptions.outputPath\n ) ??\n resolved?.config?.build?.outDir;\n\n if (!outDir) {\n throw new Error(\n `Could not infer the \"outputPath\" or \"outDir\". It should be set in your vite.config.ts, or as a property of the \"${options.buildTarget}\" buildTarget or provided explicitly as a \"staticFilePath\" option.`\n );\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n // Merge the options from the build and preview-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...{ watch: {} },\n build: {\n outDir,\n },\n ...(isCustomBuildTarget ? {} : buildTargetOptions),\n ...extraArgs,\n };\n\n // Retrieve the server configuration.\n const serverConfig: InlineConfig = mergeConfig(\n {\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 ...mergedOptions,\n preview: getVitePreviewOptions(mergedOptions, context),\n }\n );\n\n if (serverConfig.mode === 'production') {\n console.warn('WARNING: preview is not meant to be run in production!');\n }\n\n let server: PreviewServer | undefined;\n\n const processOnExit = async () => {\n await closeServer(server);\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n\n // Launch the build target.\n // If customBuildTarget is set to true, do not provide any overrides to it\n const buildTargetOverrides = isCustomBuildTarget ? {} : mergedOptions;\n const build = await runExecutor(target, buildTargetOverrides, context);\n\n for await (const result of build) {\n if (result.success) {\n try {\n if (!server) {\n server = await preview(serverConfig);\n }\n server.printUrls();\n\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n } else {\n yield {\n success: false,\n baseUrl: '',\n };\n }\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n\nfunction closeServer(server?: PreviewServer): Promise<void> {\n return new Promise((resolve) => {\n if (!server) {\n resolve();\n } else {\n const { httpServer } = server;\n if (httpServer['closeAllConnections']) {\n // https://github.com/vitejs/vite/pull/14834\n // closeAllConnections was added in Node v18.2.0\n // typically is \"as http.Server\" but no reason\n // to import http just for this\n (httpServer as any).closeAllConnections();\n }\n httpServer.close(() => resolve());\n }\n });\n}\n\nexport default vitePreviewServerExecutor;\n\nasync function getExtraArgs(\n options: VitePreviewServerExecutorOptions\n): Promise<InlineConfig> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n return extraArgs as InlineConfig;\n}\n"],"names":["vitePreviewServerExecutor","options","context","resolved","mergeConfig","preview","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","target","parseTargetString","buildTarget","targetConfiguration","project","targets","Error","isCustomBuildTarget","executor","buildTargetOptions","getNxTargetOptions","viteConfigPath","normalizeViteConfigFilePath","configFile","extraArgs","getExtraArgs","mode","command","outDir","staticFilePath","joinPathFragments","offsetFromRoot","outputPath","config","build","process","cwd","relative","mergedOptions","watch","serverConfig","getVitePreviewOptions","console","warn","server","processOnExit","closeServer","once","buildTargetOverrides","runExecutor","result","success","printUrls","resolvedUrls","local","network","baseUrl","e","error","Promise","resolve","httpServer","closeAllConnections","close","schema","key","Object","keys","properties"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/executors/preview-server/preview-server.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n offsetFromRoot,\n parseTargetString,\n runExecutor,\n} from '@nx/devkit';\nimport type { InlineConfig, PreviewOptions, PreviewServer } from 'vite';\nimport {\n getNxTargetOptions,\n getProxyConfig,\n normalizeViteConfigFilePath,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from '../build/schema';\nimport { VitePreviewServerExecutorOptions } from './schema';\nimport { relative } from 'path';\nimport { getBuildExtraArgs } from '../build/build.impl';\n\nexport async function* vitePreviewServerExecutor(\n options: VitePreviewServerExecutorOptions,\n context: ExecutorContext\n) {\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { mergeConfig, preview, loadConfigFromFile } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const target = parseTargetString(options.buildTarget, context);\n const targetConfiguration =\n context.projectsConfigurations.projects[target.project]?.targets[\n target.target\n ];\n if (!targetConfiguration) {\n throw new Error(`Invalid buildTarget: ${options.buildTarget}`);\n }\n\n const isCustomBuildTarget =\n targetConfiguration.executor !== '@nx/vite:build' &&\n targetConfiguration.executor !== '@nrwl/vite:build';\n\n // Retrieve the option for the configured buildTarget.\n const buildTargetOptions: ViteBuildExecutorOptions = getNxTargetOptions(\n options.buildTarget,\n context\n );\n\n const viteConfigPath = normalizeViteConfigFilePath(\n context.root,\n projectRoot,\n buildTargetOptions.configFile\n );\n\n const { buildOptions, otherOptions: otherOptionsFromBuild } =\n await getBuildExtraArgs(buildTargetOptions);\n\n const { previewOptions, otherOptions } = await getExtraArgs(options);\n const resolved = await loadConfigFromFile(\n {\n mode: otherOptions?.mode ?? 'production',\n command: 'build',\n },\n viteConfigPath\n );\n\n const outDir =\n options.staticFilePath ??\n joinPathFragments(\n offsetFromRoot(projectRoot),\n buildTargetOptions.outputPath\n ) ??\n resolved?.config?.build?.outDir;\n\n if (!outDir) {\n throw new Error(\n `Could not infer the \"outputPath\" or \"outDir\". It should be set in your vite.config.ts, or as a property of the \"${options.buildTarget}\" buildTarget or provided explicitly as a \"staticFilePath\" option.`\n );\n }\n const root =\n projectRoot === '.'\n ? process.cwd()\n : relative(context.cwd, joinPathFragments(context.root, projectRoot));\n\n // Merge the options from the build and preview-serve targets.\n // The latter takes precedence.\n const mergedOptions = {\n ...{ watch: {} },\n build: {\n outDir,\n ...(isCustomBuildTarget ? {} : buildOptions),\n },\n ...(isCustomBuildTarget ? {} : otherOptionsFromBuild),\n ...otherOptions,\n preview: {\n ...getProxyConfig(context, otherOptions.proxyConfig),\n ...previewOptions,\n },\n };\n\n const serverConfig: InlineConfig = mergeConfig(\n {\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 ...mergedOptions,\n }\n );\n\n if (serverConfig.mode === 'production') {\n console.warn('WARNING: preview is not meant to be run in production!');\n }\n\n let server: PreviewServer | undefined;\n\n const processOnExit = async () => {\n await closeServer(server);\n };\n\n process.once('SIGINT', processOnExit);\n process.once('SIGTERM', processOnExit);\n process.once('exit', processOnExit);\n\n // Launch the build target.\n // If customBuildTarget is set to true, do not provide any overrides to it\n const buildTargetOverrides = isCustomBuildTarget ? {} : mergedOptions;\n const build = await runExecutor(target, buildTargetOverrides, context);\n\n for await (const result of build) {\n if (result.success) {\n try {\n if (!server) {\n server = await preview(serverConfig);\n }\n server.printUrls();\n\n const resolvedUrls = [\n ...server.resolvedUrls.local,\n ...server.resolvedUrls.network,\n ];\n\n yield {\n success: true,\n baseUrl: resolvedUrls[0] ?? '',\n };\n } catch (e) {\n console.error(e);\n yield {\n success: false,\n baseUrl: '',\n };\n }\n } else {\n yield {\n success: false,\n baseUrl: '',\n };\n }\n }\n\n await new Promise<void>((resolve) => {\n process.once('SIGINT', () => resolve());\n process.once('SIGTERM', () => resolve());\n process.once('exit', () => resolve());\n });\n}\n\nfunction closeServer(server?: PreviewServer): Promise<void> {\n return new Promise((resolve) => {\n if (!server) {\n resolve();\n } else {\n const { httpServer } = server;\n if (httpServer['closeAllConnections']) {\n // https://github.com/vitejs/vite/pull/14834\n // closeAllConnections was added in Node v18.2.0\n // typically is \"as http.Server\" but no reason\n // to import http just for this\n (httpServer as any).closeAllConnections();\n }\n httpServer.close(() => resolve());\n }\n });\n}\n\nexport default vitePreviewServerExecutor;\n\nasync function getExtraArgs(\n options: VitePreviewServerExecutorOptions\n): Promise<{\n previewOptions: PreviewOptions;\n otherOptions: Record<string, any>;\n}> {\n // support passing extra args to vite cli\n const schema = await import('./schema.json');\n const extraArgs = {};\n for (const key of Object.keys(options)) {\n if (!schema.properties[key]) {\n extraArgs[key] = options[key];\n }\n }\n\n const previewOptions = {} as PreviewOptions;\n const previewSchemaKeys = [\n 'port',\n 'strictPort',\n 'host',\n 'https',\n 'open',\n 'proxy',\n 'cors',\n 'headers',\n ];\n\n const otherOptions = {};\n for (const key of Object.keys(extraArgs)) {\n if (previewSchemaKeys.includes(key)) {\n previewOptions[key] = extraArgs[key];\n } else {\n otherOptions[key] = extraArgs[key];\n }\n }\n\n return {\n previewOptions,\n otherOptions,\n };\n}\n"],"names":["vitePreviewServerExecutor","options","context","resolved","process","env","VITE_CJS_IGNORE_WARNING","mergeConfig","preview","loadConfigFromFile","Function","projectRoot","projectsConfigurations","projects","projectName","root","target","parseTargetString","buildTarget","targetConfiguration","project","targets","Error","isCustomBuildTarget","executor","buildTargetOptions","getNxTargetOptions","viteConfigPath","normalizeViteConfigFilePath","configFile","buildOptions","otherOptions","otherOptionsFromBuild","getBuildExtraArgs","previewOptions","getExtraArgs","mode","command","outDir","staticFilePath","joinPathFragments","offsetFromRoot","outputPath","config","build","cwd","relative","mergedOptions","watch","getProxyConfig","proxyConfig","serverConfig","console","warn","server","processOnExit","closeServer","once","buildTargetOverrides","runExecutor","result","success","printUrls","resolvedUrls","local","network","baseUrl","e","error","Promise","resolve","httpServer","closeAllConnections","close","schema","extraArgs","key","Object","keys","properties","previewSchemaKeys","includes"],"mappings":"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"}
|
|
@@ -56,12 +56,9 @@ async function getOptions(options, context, projectRoot, extraArgs) {
|
|
|
56
56
|
}
|
|
57
57
|
async function getExtraArgs(options) {
|
|
58
58
|
// support passing extra args to vite cli
|
|
59
|
-
const schema = await Promise.resolve().then(()=>require("../schema.json"));
|
|
60
59
|
const extraArgs = {};
|
|
61
60
|
for (const key of Object.keys(options)){
|
|
62
|
-
|
|
63
|
-
extraArgs[key] = options[key];
|
|
64
|
-
}
|
|
61
|
+
extraArgs[key] = options[key];
|
|
65
62
|
}
|
|
66
63
|
return extraArgs;
|
|
67
64
|
}
|
|
@@ -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';\
|
|
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';\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 (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\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 ...extraArgs,\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"],"names":["getOptions","getExtraArgs","options","context","projectRoot","extraArgs","resolved","loadConfigFromFile","mergeConfig","Function","viteConfigPath","normalizeViteConfigFilePath","root","configFile","Error","stripIndents","mode","command","config","logger","warn","path","projectName","process","cwd","relative","joinPathFragments","settings","key","Object","keys"],"mappings":";;;;;;;;IAUsBA,UAAU;eAAVA;;IA+DAC,YAAY;eAAZA;;;;wBApEf;8BAEqC;sBACnB;AAElB,eAAeD,WACpBE,OAA8B,EAC9BC,OAAwB,EACxBC,WAAmB,EACnBC,SAA8B;QAiCNC,kBAuBLA;IAtDnB,yFAAyF;IACzF,MAAM,EAAEC,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAOC,SACjD;IAGF,MAAMC,iBAAiBC,IAAAA,yCAA2B,EAChDR,QAAQS,IAAI,EACZR,aACAF,QAAQW,UAAU;IAGpB,IAAI,CAACH,gBAAgB;QACnB,MAAM,IAAII,MACRC,IAAAA,oBAAY,CAAA,CAAC;oDACiC,EAAEL,eAAe;;;;;QAK7D,CAAC;IAEP;QAIUL;IAFV,MAAMC,WAAW,MAAMC,mBACrB;QACES,MAAMX,CAAAA,kBAAAA,6BAAAA,UAAWW,IAAI,YAAfX,kBAAmB;QACzBY,SAAS;IACX,GACAP;IAGF,IAAI,CAACA,kBAAkB,EAACJ,6BAAAA,mBAAAA,SAAUY,MAAM,qBAAhBZ,gBAAkB,CAAC,OAAO,GAAE;YAEhDA;QADFa,cAAM,CAACC,IAAI,CAACL,IAAAA,oBAAY,CAAA,CAAC,4CAA4C,EACnET,CAAAA,iBAAAA,4BAAAA,SAAUe,IAAI,YAAdf,iBAAkBI,eACnB;;kDAE6C,EAC9CP,QAAQmB,WAAW,CACpB;QACK,CAAC;IACP;IACA,MAAMV,OACJR,gBAAgB,MACZmB,QAAQC,GAAG,KACXC,IAAAA,cAAQ,EAACtB,QAAQqB,GAAG,EAAEE,IAAAA,yBAAiB,EAACvB,QAAQS,IAAI,EAAER;QAMpDE;IAJR,MAAMqB,WAAW,eACZtB;QACH,sEAAsE;QACtE,gEAAgE;QAChEO,MAAMN,CAAAA,wBAAAA,SAASY,MAAM,CAACN,IAAI,YAApBN,wBAAwBM;QAC9BC,YAAYH;;QAGKJ;IAAnB,OAAOE,YAAYF,CAAAA,wBAAAA,6BAAAA,oBAAAA,SAAUY,MAAM,qBAAhBZ,iBAAkB,CAAC,OAAO,YAA1BA,wBAA8B,CAAC,GAAGqB;AACvD;AAEO,eAAe1B,aACpBC,OAA8B;IAE9B,yCAAyC;IACzC,MAAMG,YAAiC,CAAC;IACxC,KAAK,MAAMuB,OAAOC,OAAOC,IAAI,CAAC5B,SAAU;QACtCG,SAAS,CAACuB,IAAI,GAAG1B,OAAO,CAAC0B,IAAI;IAC/B;IAEA,OAAOvB;AACT"}
|
|
@@ -21,6 +21,8 @@ const _utils = require("./lib/utils");
|
|
|
21
21
|
async function* vitestExecutor(options, context) {
|
|
22
22
|
const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
|
|
23
23
|
(0, _internal.registerTsConfigPaths)((0, _path.resolve)(_devkit.workspaceRoot, projectRoot, 'tsconfig.json'));
|
|
24
|
+
process.env.VITE_CJS_IGNORE_WARNING = 'true';
|
|
25
|
+
// Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.
|
|
24
26
|
const { startVitest } = await Function('return import("vitest/node")')();
|
|
25
27
|
const extraArgs = await (0, _utils.getExtraArgs)(options);
|
|
26
28
|
var _ref;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import { ExecutorContext, workspaceRoot } from '@nx/devkit';\nimport { VitestExecutorOptions } from './schema';\nimport { resolve } from 'path';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\nimport { NxReporter } from './lib/nx-reporter';\nimport { getExtraArgs, getOptions } from './lib/utils';\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const extraArgs = await getExtraArgs(options);\n const resolvedOptions =\n (await getOptions(options, context, projectRoot, extraArgs)) ?? {};\n\n const nxReporter = new NxReporter(resolvedOptions['watch']);\n if (resolvedOptions['reporters'] === undefined) {\n resolvedOptions['reporters'] = [];\n } else if (typeof resolvedOptions['reporters'] === 'string') {\n resolvedOptions['reporters'] = [resolvedOptions['reporters']];\n }\n resolvedOptions['reporters'].push(nxReporter);\n\n const cliFilters = options.testFiles ?? [];\n\n const ctx = await startVitest(\n resolvedOptions['mode'] ?? 'test',\n cliFilters,\n resolvedOptions\n );\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (resolvedOptions['watch'] === true) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","workspaceRoot","startVitest","Function","extraArgs","getExtraArgs","resolvedOptions","getOptions","nxReporter","NxReporter","undefined","push","cliFilters","testFiles","ctx","hasErrors","processExit","exit","
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import { ExecutorContext, workspaceRoot } from '@nx/devkit';\nimport { VitestExecutorOptions } from './schema';\nimport { resolve } from 'path';\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\nimport { NxReporter } from './lib/nx-reporter';\nimport { getExtraArgs, getOptions } from './lib/utils';\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(workspaceRoot, projectRoot, 'tsconfig.json'));\n\n process.env.VITE_CJS_IGNORE_WARNING = 'true';\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const extraArgs = await getExtraArgs(options);\n const resolvedOptions =\n (await getOptions(options, context, projectRoot, extraArgs)) ?? {};\n\n const nxReporter = new NxReporter(resolvedOptions['watch']);\n if (resolvedOptions['reporters'] === undefined) {\n resolvedOptions['reporters'] = [];\n } else if (typeof resolvedOptions['reporters'] === 'string') {\n resolvedOptions['reporters'] = [resolvedOptions['reporters']];\n }\n resolvedOptions['reporters'].push(nxReporter);\n\n const cliFilters = options.testFiles ?? [];\n\n const ctx = await startVitest(\n resolvedOptions['mode'] ?? 'test',\n cliFilters,\n resolvedOptions\n );\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (resolvedOptions['watch'] === true) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","workspaceRoot","process","env","VITE_CJS_IGNORE_WARNING","startVitest","Function","extraArgs","getExtraArgs","resolvedOptions","getOptions","nxReporter","NxReporter","undefined","push","cliFilters","testFiles","ctx","hasErrors","processExit","exit","on","report","exitCode","success"],"mappings":";;;;;;;;IAOuBA,cAAc;eAAdA;;IA+DvB,OAA8B;eAA9B;;;wBAtE+C;sBAEvB;0BACc;4BACX;uBACc;AAElC,gBAAgBA,eACrBC,OAA8B,EAC9BC,OAAwB;IAExB,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IAEnEC,IAAAA,+BAAqB,EAACC,IAAAA,aAAO,EAACC,qBAAa,EAAEP,aAAa;IAE1DQ,QAAQC,GAAG,CAACC,uBAAuB,GAAG;IACtC,yFAAyF;IACzF,MAAM,EAAEC,WAAW,EAAE,GAAG,MAAOC,SAC7B;IAGF,MAAMC,YAAY,MAAMC,IAAAA,mBAAY,EAAChB;QAElC;IADH,MAAMiB,kBACJ,CAAC,OAAA,MAAMC,IAAAA,iBAAU,EAAClB,SAASC,SAASC,aAAaa,sBAAhD,OAA+D,CAAC;IAEnE,MAAMI,aAAa,IAAIC,sBAAU,CAACH,eAAe,CAAC,QAAQ;IAC1D,IAAIA,eAAe,CAAC,YAAY,KAAKI,WAAW;QAC9CJ,eAAe,CAAC,YAAY,GAAG,EAAE;IACnC,OAAO,IAAI,OAAOA,eAAe,CAAC,YAAY,KAAK,UAAU;QAC3DA,eAAe,CAAC,YAAY,GAAG;YAACA,eAAe,CAAC,YAAY;SAAC;IAC/D;IACAA,eAAe,CAAC,YAAY,CAACK,IAAI,CAACH;QAEfnB;IAAnB,MAAMuB,aAAavB,CAAAA,qBAAAA,QAAQwB,SAAS,YAAjBxB,qBAAqB,EAAE;QAGxCiB;IADF,MAAMQ,MAAM,MAAMZ,YAChBI,CAAAA,wBAAAA,eAAe,CAAC,OAAO,YAAvBA,wBAA2B,QAC3BM,YACAN;IAGF,IAAIS,YAAY;IAEhB,MAAMC,cAAc;QAClBF,IAAIG,IAAI;QACR,IAAIF,WAAW;YACbhB,QAAQkB,IAAI,CAAC;QACf,OAAO;YACLlB,QAAQkB,IAAI,CAAC;QACf;IACF;IAEA,IAAIX,eAAe,CAAC,QAAQ,KAAK,MAAM;QACrCP,QAAQmB,EAAE,CAAC,UAAUF;QACrBjB,QAAQmB,EAAE,CAAC,WAAWF;QACtBjB,QAAQmB,EAAE,CAAC,QAAQF;IACrB;IAEA,WAAW,MAAMG,UAAUX,WAAY;QACrC,4DAA4D;QAC5DO,YACEI,OAAOJ,SAAS,IAAKhB,QAAQqB,QAAQ,IAAIrB,QAAQqB,QAAQ,KAAK;IAClE;IAEA,OAAO;QACLC,SAAS,CAACN;IACZ;AACF;MAEA,WAAe3B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { FileReplacement } from '../../../../plugins/rollup-replace-files.plugin';
|
|
2
|
-
export declare function addFileReplacements(configContents: string, fileReplacements: FileReplacement[]): string;
|
|
2
|
+
export declare function addFileReplacements(configContents: string, fileReplacements: FileReplacement[], configPath: string): string;
|
|
@@ -7,10 +7,16 @@ Object.defineProperty(exports, "addFileReplacements", {
|
|
|
7
7
|
});
|
|
8
8
|
const _devkit = require("@nx/devkit");
|
|
9
9
|
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
10
|
-
|
|
10
|
+
const _updateviteconfig = require("../update-vite-config");
|
|
11
|
+
function addFileReplacements(configContents, fileReplacements, configPath) {
|
|
11
12
|
var _tsquery_query, _tsquery_query1, _tsquery_query2;
|
|
12
|
-
const
|
|
13
|
-
|
|
13
|
+
const configNode = (0, _updateviteconfig.getConfigNode)(configContents);
|
|
14
|
+
if (!configNode) {
|
|
15
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
16
|
+
return configContents;
|
|
17
|
+
}
|
|
18
|
+
const pluginsObject = (_tsquery_query = _tsquery.tsquery.query(configNode, `PropertyAssignment:has(Identifier[name="plugins"])`)) == null ? void 0 : _tsquery_query[0];
|
|
19
|
+
const replaceFilesPlugin = (_tsquery_query1 = _tsquery.tsquery.query(configNode, `PropertyAssignment:has(Identifier[name="plugins"]) CallExpression:has(Identifier[name="replaceFiles"])`)) == null ? void 0 : _tsquery_query1[0];
|
|
14
20
|
const firstImportDeclaration = (_tsquery_query2 = _tsquery.tsquery.query(configContents, 'ImportDeclaration')) == null ? void 0 : _tsquery_query2[0];
|
|
15
21
|
if (pluginsObject) {
|
|
16
22
|
if (replaceFilesPlugin) {
|
|
@@ -42,7 +48,7 @@ function addFileReplacements(configContents, fileReplacements) {
|
|
|
42
48
|
return (0, _devkit.applyChangesToString)(configContents, [
|
|
43
49
|
{
|
|
44
50
|
type: _devkit.ChangeType.Insert,
|
|
45
|
-
index:
|
|
51
|
+
index: configNode.getStart() + 1,
|
|
46
52
|
text: `plugins: [replaceFiles(${JSON.stringify(fileReplacements)})],`
|
|
47
53
|
},
|
|
48
54
|
firstImportDeclaration ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/add-file-replacements.ts"],"sourcesContent":["import { ChangeType, applyChangesToString } from '@nx/devkit';\nimport { FileReplacement } from '../../../../plugins/rollup-replace-files.plugin';\nimport { tsquery } from '@phenomnomnominal/tsquery';\n\nexport function addFileReplacements(\n configContents: string,\n fileReplacements: FileReplacement[]\n): string {\n const pluginsObject = tsquery.query(\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/add-file-replacements.ts"],"sourcesContent":["import { ChangeType, applyChangesToString } from '@nx/devkit';\nimport { FileReplacement } from '../../../../plugins/rollup-replace-files.plugin';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport { getConfigNode, notFoundWarning } from '../update-vite-config';\n\nexport function addFileReplacements(\n configContents: string,\n fileReplacements: FileReplacement[],\n configPath: string\n): string {\n const configNode = getConfigNode(configContents);\n if (!configNode) {\n notFoundWarning(configPath);\n return configContents;\n }\n const pluginsObject = tsquery.query(\n configNode,\n `PropertyAssignment:has(Identifier[name=\"plugins\"])`\n )?.[0];\n const replaceFilesPlugin = tsquery.query(\n configNode,\n `PropertyAssignment:has(Identifier[name=\"plugins\"]) CallExpression:has(Identifier[name=\"replaceFiles\"])`\n )?.[0];\n\n const firstImportDeclaration = tsquery.query(\n configContents,\n 'ImportDeclaration'\n )?.[0];\n\n if (pluginsObject) {\n if (replaceFilesPlugin) {\n return configContents;\n } else {\n return applyChangesToString(configContents, [\n {\n type: ChangeType.Insert,\n index: pluginsObject.getStart() + `plugins: [`.length + 1,\n text: `replaceFiles(${JSON.stringify(fileReplacements)}),`,\n },\n firstImportDeclaration\n ? {\n type: ChangeType.Insert,\n index: firstImportDeclaration.getStart(),\n text: `import replaceFiles from '@nx/vite/plugins/rollup-replace-files.plugin';\\n`,\n }\n : {\n type: ChangeType.Insert,\n index: 0,\n text: `import replaceFiles from '@nx/vite/plugins/rollup-replace-files.plugin';\\n`,\n },\n ]);\n }\n } else {\n const foundDefineConfig = tsquery.query(\n configContents,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n )?.[0];\n\n if (!foundDefineConfig) {\n return;\n }\n return applyChangesToString(configContents, [\n {\n type: ChangeType.Insert,\n index: configNode.getStart() + 1,\n text: `plugins: [replaceFiles(${JSON.stringify(fileReplacements)})],`,\n },\n firstImportDeclaration\n ? {\n type: ChangeType.Insert,\n index: firstImportDeclaration.getStart(),\n text: `import replaceFiles from '@nx/vite/plugins/rollup-replace-files.plugin';`,\n }\n : {\n type: ChangeType.Insert,\n index: 0,\n text: `import replaceFiles from '@nx/vite/plugins/rollup-replace-files.plugin';`,\n },\n ]);\n }\n}\n"],"names":["addFileReplacements","configContents","fileReplacements","configPath","tsquery","configNode","getConfigNode","notFoundWarning","pluginsObject","query","replaceFilesPlugin","firstImportDeclaration","applyChangesToString","type","ChangeType","Insert","index","getStart","length","text","JSON","stringify","foundDefineConfig"],"mappings":";+BAKgBA;;;eAAAA;;;wBALiC;yBAEzB;kCACuB;AAExC,SAASA,oBACdC,cAAsB,EACtBC,gBAAmC,EACnCC,UAAkB;QAOIC,gBAIKA,iBAKIA;IAd/B,MAAMC,aAAaC,IAAAA,+BAAa,EAACL;IACjC,IAAI,CAACI,YAAY;QACfE,IAAAA,iCAAe,EAACJ;QAChB,OAAOF;IACT;IACA,MAAMO,iBAAgBJ,iBAAAA,gBAAO,CAACK,KAAK,CACjCJ,YACA,CAAC,kDAAkD,CAAC,sBAFhCD,cAGnB,CAAC,EAAE;IACN,MAAMM,sBAAqBN,kBAAAA,gBAAO,CAACK,KAAK,CACtCJ,YACA,CAAC,sGAAsG,CAAC,sBAF/ED,eAGxB,CAAC,EAAE;IAEN,MAAMO,0BAAyBP,kBAAAA,gBAAO,CAACK,KAAK,CAC1CR,gBACA,yCAF6BG,eAG5B,CAAC,EAAE;IAEN,IAAII,eAAe;QACjB,IAAIE,oBAAoB;YACtB,OAAOT;QACT,OAAO;YACL,OAAOW,IAAAA,4BAAoB,EAACX,gBAAgB;gBAC1C;oBACEY,MAAMC,kBAAU,CAACC,MAAM;oBACvBC,OAAOR,cAAcS,QAAQ,KAAK,CAAC,UAAU,CAAC,CAACC,MAAM,GAAG;oBACxDC,MAAM,CAAC,aAAa,EAAEC,KAAKC,SAAS,CAACnB,kBAAkB,EAAE,CAAC;gBAC5D;gBACAS,yBACI;oBACEE,MAAMC,kBAAU,CAACC,MAAM;oBACvBC,OAAOL,uBAAuBM,QAAQ;oBACtCE,MAAM,CAAC,0EAA0E,CAAC;gBACpF,IACA;oBACEN,MAAMC,kBAAU,CAACC,MAAM;oBACvBC,OAAO;oBACPG,MAAM,CAAC,0EAA0E,CAAC;gBACpF;aACL;QACH;IACF,OAAO;YACqBf;QAA1B,MAAMkB,qBAAoBlB,kBAAAA,gBAAO,CAACK,KAAK,CACrCR,gBACA,2EAFwBG,eAGvB,CAAC,EAAE;QAEN,IAAI,CAACkB,mBAAmB;YACtB;QACF;QACA,OAAOV,IAAAA,4BAAoB,EAACX,gBAAgB;YAC1C;gBACEY,MAAMC,kBAAU,CAACC,MAAM;gBACvBC,OAAOX,WAAWY,QAAQ,KAAK;gBAC/BE,MAAM,CAAC,uBAAuB,EAAEC,KAAKC,SAAS,CAACnB,kBAAkB,GAAG,CAAC;YACvE;YACAS,yBACI;gBACEE,MAAMC,kBAAU,CAACC,MAAM;gBACvBC,OAAOL,uBAAuBM,QAAQ;gBACtCE,MAAM,CAAC,wEAAwE,CAAC;YAClF,IACA;gBACEN,MAAMC,kBAAU,CAACC,MAAM;gBACvBC,OAAO;gBACPG,MAAM,CAAC,wEAAwE,CAAC;YAClF;SACL;IACH;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ProjectConfiguration, Tree } from '@nx/devkit';
|
|
2
|
-
export declare function updateBuildOutDirAndRoot(options: Record<string, any>, configContents: string, projectConfig: ProjectConfiguration, targetName: string, tree: Tree, projectName: string): string;
|
|
2
|
+
export declare function updateBuildOutDirAndRoot(options: Record<string, any>, configContents: string, projectConfig: ProjectConfiguration, targetName: string, tree: Tree, projectName: string, configPath: string): string;
|
|
@@ -7,22 +7,26 @@ Object.defineProperty(exports, "updateBuildOutDirAndRoot", {
|
|
|
7
7
|
});
|
|
8
8
|
const _devkit = require("@nx/devkit");
|
|
9
9
|
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
10
|
+
const _updateviteconfig = require("../update-vite-config");
|
|
10
11
|
const ts = require("typescript");
|
|
11
|
-
function updateBuildOutDirAndRoot(options, configContents, projectConfig, targetName, tree, projectName) {
|
|
12
|
+
function updateBuildOutDirAndRoot(options, configContents, projectConfig, targetName, tree, projectName, configPath) {
|
|
12
13
|
var _tsquery_query;
|
|
13
14
|
const foundDefineConfig = (_tsquery_query = _tsquery.tsquery.query(configContents, 'CallExpression:has(Identifier[name="defineConfig"])')) == null ? void 0 : _tsquery_query[0];
|
|
14
15
|
if (!foundDefineConfig) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Please add the build.outDir and root options to your vite.config file.
|
|
18
|
-
`);
|
|
16
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
17
|
+
return;
|
|
19
18
|
}
|
|
20
|
-
configContents = fixBuild(options, configContents, projectConfig, targetName, tree, projectName,
|
|
21
|
-
configContents = addRoot(configContents,
|
|
19
|
+
configContents = fixBuild(options, configContents, projectConfig, targetName, tree, projectName, configPath);
|
|
20
|
+
configContents = addRoot(configContents, configPath);
|
|
22
21
|
return configContents;
|
|
23
22
|
}
|
|
24
|
-
function fixBuild(options, configContents, projectConfig, targetName, tree, projectName,
|
|
23
|
+
function fixBuild(options, configContents, projectConfig, targetName, tree, projectName, configPath) {
|
|
25
24
|
var _tsquery_query;
|
|
25
|
+
const configNode = (0, _updateviteconfig.getConfigNode)(configContents);
|
|
26
|
+
if (!configNode) {
|
|
27
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
28
|
+
return configContents;
|
|
29
|
+
}
|
|
26
30
|
let outputPath = '';
|
|
27
31
|
// In vite.config.ts, we want to keep the path relative to workspace root
|
|
28
32
|
if (options.outputPath) {
|
|
@@ -33,7 +37,7 @@ function fixBuild(options, configContents, projectConfig, targetName, tree, proj
|
|
|
33
37
|
// In project.json, we want to keep the path starting from workspace root
|
|
34
38
|
projectConfig.targets[targetName].options.outputPath = options.outputPath ? options.outputPath : (0, _devkit.joinPathFragments)('dist', projectConfig.root);
|
|
35
39
|
(0, _devkit.updateProjectConfiguration)(tree, projectName, projectConfig);
|
|
36
|
-
const buildObject = (_tsquery_query = _tsquery.tsquery.query(
|
|
40
|
+
const buildObject = (_tsquery_query = _tsquery.tsquery.query(configNode, `PropertyAssignment:has(Identifier[name="build"])`)) == null ? void 0 : _tsquery_query[0];
|
|
37
41
|
if (buildObject) {
|
|
38
42
|
var _tsquery_query1, _tsquery_query2, _tsquery_query3;
|
|
39
43
|
const reportCompressedSizeExists = ((_tsquery_query1 = _tsquery.tsquery.query(buildObject, `PropertyAssignment:has(Identifier[name="reportCompressedSize"])`)) == null ? void 0 : _tsquery_query1.length) > 0;
|
|
@@ -69,43 +73,49 @@ function fixBuild(options, configContents, projectConfig, targetName, tree, proj
|
|
|
69
73
|
return (0, _devkit.applyChangesToString)(configContents, changes);
|
|
70
74
|
}
|
|
71
75
|
} else {
|
|
72
|
-
return addBuildProperty(configContents, outputPath,
|
|
76
|
+
return addBuildProperty(configContents, outputPath, configPath);
|
|
73
77
|
}
|
|
74
78
|
return configContents;
|
|
75
79
|
}
|
|
76
|
-
function addRoot(configFileContents,
|
|
80
|
+
function addRoot(configFileContents, configPath) {
|
|
77
81
|
var _tsquery_query;
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
82
|
+
const configNode = (0, _updateviteconfig.getConfigNode)(configFileContents);
|
|
83
|
+
if (!configNode) {
|
|
84
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
85
|
+
return configFileContents;
|
|
86
|
+
}
|
|
87
|
+
const rootOption = (_tsquery_query = _tsquery.tsquery.query(configNode, `PropertyAssignment:has(Identifier[name="root"]) Identifier[name="__dirname"]`)) == null ? void 0 : _tsquery_query[0];
|
|
88
|
+
if (rootOption) {
|
|
80
89
|
return configFileContents;
|
|
81
90
|
} else {
|
|
82
91
|
return (0, _devkit.applyChangesToString)(configFileContents, [
|
|
83
92
|
{
|
|
84
93
|
type: _devkit.ChangeType.Insert,
|
|
85
|
-
index:
|
|
94
|
+
index: configNode.getStart() + 1,
|
|
86
95
|
text: `root: __dirname,`
|
|
87
96
|
}
|
|
88
97
|
]);
|
|
89
98
|
}
|
|
90
99
|
}
|
|
91
|
-
function addBuildProperty(configFileContents, outputPath,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
function addBuildProperty(configFileContents, outputPath, configPath) {
|
|
101
|
+
const configNode = (0, _updateviteconfig.getConfigNode)(configFileContents);
|
|
102
|
+
if (!configNode) {
|
|
103
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
104
|
+
return configFileContents;
|
|
105
|
+
}
|
|
106
|
+
return (0, _devkit.applyChangesToString)(configFileContents, [
|
|
107
|
+
{
|
|
108
|
+
type: _devkit.ChangeType.Insert,
|
|
109
|
+
index: configNode.getStart() + 1,
|
|
110
|
+
text: `build: {
|
|
98
111
|
outDir: '${outputPath}',
|
|
99
112
|
reportCompressedSize: true,
|
|
100
113
|
commonjsOptions: {
|
|
101
114
|
transformMixedEsModules: true,
|
|
102
115
|
},
|
|
103
116
|
},`
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
} else {
|
|
107
|
-
return configFileContents;
|
|
108
|
-
}
|
|
117
|
+
}
|
|
118
|
+
]);
|
|
109
119
|
}
|
|
110
120
|
|
|
111
121
|
//# sourceMappingURL=edit-build-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/edit-build-config.ts"],"sourcesContent":["import {\n ChangeType,\n ProjectConfiguration,\n Tree,\n applyChangesToString,\n joinPathFragments,\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/edit-build-config.ts"],"sourcesContent":["import {\n ChangeType,\n ProjectConfiguration,\n Tree,\n applyChangesToString,\n joinPathFragments,\n offsetFromRoot,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\nimport { getConfigNode, notFoundWarning } from '../update-vite-config';\n\nexport function updateBuildOutDirAndRoot(\n options: Record<string, any>,\n configContents: string,\n projectConfig: ProjectConfiguration,\n targetName: string,\n tree: Tree,\n projectName: string,\n configPath: string\n): string {\n const foundDefineConfig = tsquery.query(\n configContents,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n )?.[0];\n\n if (!foundDefineConfig) {\n notFoundWarning(configPath);\n return;\n }\n\n configContents = fixBuild(\n options,\n configContents,\n projectConfig,\n targetName,\n tree,\n projectName,\n configPath\n );\n\n configContents = addRoot(configContents, configPath);\n\n return configContents;\n}\n\nfunction fixBuild(\n options: Record<string, any>,\n configContents: string,\n projectConfig: ProjectConfiguration,\n targetName: string,\n tree: Tree,\n projectName: string,\n configPath: string\n) {\n const configNode = getConfigNode(configContents);\n if (!configNode) {\n notFoundWarning(configPath);\n return configContents;\n }\n\n let outputPath = '';\n\n // In vite.config.ts, we want to keep the path relative to workspace root\n if (options.outputPath) {\n outputPath = joinPathFragments(\n offsetFromRoot(projectConfig.root),\n options.outputPath\n );\n } else {\n outputPath = joinPathFragments(\n offsetFromRoot(projectConfig.root),\n 'dist',\n projectConfig.root\n );\n }\n\n // In project.json, we want to keep the path starting from workspace root\n projectConfig.targets[targetName].options.outputPath = options.outputPath\n ? options.outputPath\n : joinPathFragments('dist', projectConfig.root);\n updateProjectConfiguration(tree, projectName, projectConfig);\n\n const buildObject = tsquery.query(\n configNode,\n `PropertyAssignment:has(Identifier[name=\"build\"])`\n )?.[0];\n\n if (buildObject) {\n const reportCompressedSizeExists =\n tsquery.query(\n buildObject,\n `PropertyAssignment:has(Identifier[name=\"reportCompressedSize\"])`\n )?.length > 0;\n\n const commonjsOptionsExists =\n tsquery.query(\n buildObject,\n `PropertyAssignment:has(Identifier[name=\"commonjsOptions\"])`\n )?.length > 0;\n\n const buildOutDir = tsquery.query(\n buildObject,\n `PropertyAssignment:has(Identifier[name=\"outDir\"])`\n )?.length;\n\n // Array to store changes\n let changes = [];\n\n // Add outDir if not present\n if (!buildOutDir) {\n changes.push({\n type: ChangeType.Insert,\n index: buildObject.getStart() + `build: {`.length + 1,\n text: `outDir: '${outputPath}',`,\n });\n }\n\n // Add reportCompressedSize if not present\n if (!reportCompressedSizeExists) {\n changes.push({\n type: ChangeType.Insert,\n index: buildObject.getStart() + `build: {`.length + 1,\n text: `reportCompressedSize: true,`,\n });\n }\n\n // Add commonjsOptions if not present\n if (!commonjsOptionsExists) {\n changes.push({\n type: ChangeType.Insert,\n index: buildObject.getStart() + `build: {`.length + 1,\n text: `commonjsOptions: { transformMixedEsModules: true },`,\n });\n }\n\n if (changes.length > 0) {\n return applyChangesToString(configContents, changes);\n }\n } else {\n return addBuildProperty(configContents, outputPath, configPath);\n }\n\n return configContents;\n}\n\nfunction addRoot(configFileContents: string, configPath: string): string {\n const configNode = getConfigNode(configFileContents);\n\n if (!configNode) {\n notFoundWarning(configPath);\n return configFileContents;\n }\n\n const rootOption = tsquery.query(\n configNode,\n `PropertyAssignment:has(Identifier[name=\"root\"]) Identifier[name=\"__dirname\"]`\n )?.[0];\n\n if (rootOption) {\n return configFileContents;\n } else {\n return applyChangesToString(configFileContents, [\n {\n type: ChangeType.Insert,\n index: configNode.getStart() + 1,\n text: `root: __dirname,`,\n },\n ]);\n }\n}\n\nfunction addBuildProperty(\n configFileContents: string,\n outputPath: string,\n configPath: string\n): string {\n const configNode = getConfigNode(configFileContents);\n if (!configNode) {\n notFoundWarning(configPath);\n return configFileContents;\n }\n\n return applyChangesToString(configFileContents, [\n {\n type: ChangeType.Insert,\n index: configNode.getStart() + 1,\n text: `build: {\n outDir: '${outputPath}',\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },`,\n },\n ]);\n}\n"],"names":["updateBuildOutDirAndRoot","ts","options","configContents","projectConfig","targetName","tree","projectName","configPath","tsquery","foundDefineConfig","query","notFoundWarning","fixBuild","addRoot","configNode","getConfigNode","outputPath","joinPathFragments","offsetFromRoot","root","targets","updateProjectConfiguration","buildObject","reportCompressedSizeExists","length","commonjsOptionsExists","buildOutDir","changes","push","type","ChangeType","Insert","index","getStart","text","applyChangesToString","addBuildProperty","configFileContents","rootOption"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ProjectConfiguration } from '@nx/devkit';
|
|
2
|
-
export declare function updateTestConfig(configContents: string, projectConfig: ProjectConfiguration): string;
|
|
2
|
+
export declare function updateTestConfig(configContents: string, projectConfig: ProjectConfiguration, configPath: string): string;
|
|
@@ -7,10 +7,16 @@ Object.defineProperty(exports, "updateTestConfig", {
|
|
|
7
7
|
});
|
|
8
8
|
const _devkit = require("@nx/devkit");
|
|
9
9
|
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
10
|
+
const _updateviteconfig = require("../update-vite-config");
|
|
10
11
|
const ts = require("typescript");
|
|
11
|
-
function updateTestConfig(configContents, projectConfig) {
|
|
12
|
+
function updateTestConfig(configContents, projectConfig, configPath) {
|
|
12
13
|
var _tsquery_query, _projectConfig_targets_test_options, _projectConfig_targets_test, _projectConfig_targets;
|
|
13
|
-
const
|
|
14
|
+
const configNode = (0, _updateviteconfig.getConfigNode)(configContents);
|
|
15
|
+
if (!configNode) {
|
|
16
|
+
(0, _updateviteconfig.notFoundWarning)(configPath);
|
|
17
|
+
return configContents;
|
|
18
|
+
}
|
|
19
|
+
const testObject = (_tsquery_query = _tsquery.tsquery.query(configNode, `PropertyAssignment:has(Identifier[name="test"])`)) == null ? void 0 : _tsquery_query[0];
|
|
14
20
|
let testCoverageDir;
|
|
15
21
|
let testCoverage;
|
|
16
22
|
let provider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/edit-test-config.ts"],"sourcesContent":["import {\n ChangeType,\n ProjectConfiguration,\n applyChangesToString,\n joinPathFragments,\n offsetFromRoot,\n} from '@nx/devkit';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\n\nexport function updateTestConfig(\n configContents: string,\n projectConfig: ProjectConfiguration\n): string {\n const testObject = tsquery.query(\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/vite/src/migrations/update-17-2-0/lib/edit-test-config.ts"],"sourcesContent":["import {\n ChangeType,\n ProjectConfiguration,\n applyChangesToString,\n joinPathFragments,\n offsetFromRoot,\n} from '@nx/devkit';\nimport { tsquery } from '@phenomnomnominal/tsquery';\nimport ts = require('typescript');\nimport { getConfigNode, notFoundWarning } from '../update-vite-config';\n\nexport function updateTestConfig(\n configContents: string,\n projectConfig: ProjectConfiguration,\n configPath: string\n): string {\n const configNode = getConfigNode(configContents);\n if (!configNode) {\n notFoundWarning(configPath);\n return configContents;\n }\n\n const testObject = tsquery.query(\n configNode,\n `PropertyAssignment:has(Identifier[name=\"test\"])`\n )?.[0];\n let testCoverageDir: ts.Node;\n let testCoverage: ts.Node;\n let provider: ts.Node;\n let reporters: ts.Node;\n\n if (testObject) {\n testCoverage = tsquery.query(\n testObject,\n `PropertyAssignment:has(Identifier[name=\"coverage\"])`\n )?.[0];\n reporters = tsquery.query(\n testObject,\n `PropertyAssignment:has(Identifier[name=\"reporters\"])`\n )?.[0];\n if (testCoverage) {\n testCoverageDir = tsquery.query(\n testCoverage,\n `PropertyAssignment:has(Identifier[name=\"reportsDirectory\"])`\n )?.[0];\n provider = tsquery.query(\n testCoverage,\n `PropertyAssignment:has(Identifier[name=\"provider\"])`\n )?.[0];\n }\n }\n\n let coverageDir = '';\n\n if (projectConfig.targets?.test?.options?.reportsDirectory) {\n coverageDir = projectConfig.targets?.test?.options?.reportsDirectory;\n } else {\n coverageDir = joinPathFragments(\n offsetFromRoot(projectConfig.root),\n 'coverage',\n projectConfig.root\n );\n }\n\n let changes = [];\n\n if (!reporters && testObject) {\n changes.push({\n type: ChangeType.Insert,\n index: testObject.getStart() + `test: {`.length + 1,\n text: `reporters: ['default'],`,\n });\n }\n\n if (testCoverageDir) {\n // Do nothing\n } else if (testCoverage) {\n // has test.coverage, has no reportsDirectory\n // so add reportsDirectory\n changes.push({\n type: ChangeType.Insert,\n index: testCoverage.getStart() + `coverage: {`.length + 1,\n text: `reportsDirectory: '${coverageDir}',`,\n });\n if (!provider) {\n changes.push({\n type: ChangeType.Insert,\n index: testCoverage.getStart() + `coverage: {`.length + 1,\n text: `provider: 'v8',`,\n });\n }\n } else if (testObject) {\n changes.push({\n type: ChangeType.Insert,\n index: testObject.getStart() + `test: {`.length + 1,\n text: `coverage: {\n reportsDirectory: '${coverageDir}',\n provider: 'v8',\n },`,\n });\n }\n\n if (changes.length > 0) {\n return applyChangesToString(configContents, changes);\n } else {\n return configContents;\n }\n}\n"],"names":["updateTestConfig","ts","configContents","projectConfig","configPath","tsquery","configNode","getConfigNode","notFoundWarning","testObject","query","testCoverageDir","testCoverage","provider","reporters","coverageDir","targets","test","options","reportsDirectory","joinPathFragments","offsetFromRoot","root","changes","push","type","ChangeType","Insert","index","getStart","length","text","applyChangesToString"],"mappings":"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"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
|
+
import ts = require('typescript');
|
|
2
3
|
export default function updateBuildDir(tree: Tree): Promise<void>;
|
|
4
|
+
export declare function getConfigNode(configFileContents: string): ts.Node | undefined;
|
|
5
|
+
export declare function notFoundWarning(configPath: string): void;
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
function _export(target, all) {
|
|
3
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
4
|
+
enumerable: true,
|
|
5
|
+
get: all[name]
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
_export(exports, {
|
|
9
|
+
default: function() {
|
|
5
10
|
return updateBuildDir;
|
|
11
|
+
},
|
|
12
|
+
getConfigNode: function() {
|
|
13
|
+
return getConfigNode;
|
|
14
|
+
},
|
|
15
|
+
notFoundWarning: function() {
|
|
16
|
+
return notFoundWarning;
|
|
6
17
|
}
|
|
7
18
|
});
|
|
8
19
|
const _devkit = require("@nx/devkit");
|
|
@@ -10,6 +21,8 @@ const _executoroptionsutils = require("@nx/devkit/src/generators/executor-option
|
|
|
10
21
|
const _editbuildconfig = require("./lib/edit-build-config");
|
|
11
22
|
const _edittestconfig = require("./lib/edit-test-config");
|
|
12
23
|
const _addfilereplacements = require("./lib/add-file-replacements");
|
|
24
|
+
const _tsquery = require("@phenomnomnominal/tsquery");
|
|
25
|
+
const ts = require("typescript");
|
|
13
26
|
async function updateBuildDir(tree) {
|
|
14
27
|
const projects = (0, _devkit.getProjects)(tree);
|
|
15
28
|
(0, _executoroptionsutils.forEachExecutorOptions)(tree, '@nx/vite:build', (options, projectName, targetName)=>{
|
|
@@ -20,10 +33,10 @@ async function updateBuildDir(tree) {
|
|
|
20
33
|
return;
|
|
21
34
|
}
|
|
22
35
|
let configContents = tree.read(config, 'utf-8');
|
|
23
|
-
configContents = (0, _editbuildconfig.updateBuildOutDirAndRoot)(options, configContents, projectConfig, targetName, tree, projectName);
|
|
24
|
-
configContents = (0, _edittestconfig.updateTestConfig)(configContents, projectConfig);
|
|
36
|
+
configContents = (0, _editbuildconfig.updateBuildOutDirAndRoot)(options, configContents, projectConfig, targetName, tree, projectName, config);
|
|
37
|
+
configContents = (0, _edittestconfig.updateTestConfig)(configContents, projectConfig, config);
|
|
25
38
|
if (((_options_fileReplacements = options.fileReplacements) == null ? void 0 : _options_fileReplacements.length) > 0) {
|
|
26
|
-
configContents = (0, _addfilereplacements.addFileReplacements)(configContents, options.fileReplacements);
|
|
39
|
+
configContents = (0, _addfilereplacements.addFileReplacements)(configContents, options.fileReplacements, config);
|
|
27
40
|
}
|
|
28
41
|
tree.write(config, configContents);
|
|
29
42
|
});
|
|
@@ -44,5 +57,26 @@ function findViteConfig(tree, searchRoot) {
|
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
}
|
|
60
|
+
function getConfigNode(configFileContents) {
|
|
61
|
+
var _tsquery_query, _tsquery_query1;
|
|
62
|
+
if (!configFileContents) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
let configNode = (_tsquery_query = _tsquery.tsquery.query(configFileContents, `ObjectLiteralExpression`)) == null ? void 0 : _tsquery_query[0];
|
|
66
|
+
const arrowFunctionReturnStatement = (_tsquery_query1 = _tsquery.tsquery.query(configFileContents, `ArrowFunction Block ReturnStatement ObjectLiteralExpression`)) == null ? void 0 : _tsquery_query1[0];
|
|
67
|
+
if (arrowFunctionReturnStatement) {
|
|
68
|
+
configNode = arrowFunctionReturnStatement;
|
|
69
|
+
}
|
|
70
|
+
return configNode;
|
|
71
|
+
}
|
|
72
|
+
function notFoundWarning(configPath) {
|
|
73
|
+
_devkit.logger.warn(`
|
|
74
|
+
Could not migrate your ${configPath} file.
|
|
75
|
+
Please add the build.outDir and root options in your ${configPath} file.
|
|
76
|
+
You can find more information on how to configure vite for Nx here:
|
|
77
|
+
|
|
78
|
+
https://nx.dev/recipes/vite/configure-vite
|
|
79
|
+
`);
|
|
80
|
+
}
|
|
47
81
|
|
|
48
82
|
//# sourceMappingURL=update-vite-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/vite/src/migrations/update-17-2-0/update-vite-config.ts"],"sourcesContent":["import {
|
|
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\nfunction findViteConfig(tree: Tree, searchRoot: string) {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (tree.exists(joinPathFragments(searchRoot, `vite.config.${ext}`))) {\n return joinPathFragments(searchRoot, `vite.config.${ext}`);\n }\n }\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","fileReplacements","length","addFileReplacements","write","formatFiles","searchRoot","allowsExt","ext","joinPathFragments","configFileContents","tsquery","configNode","query","arrowFunctionReturnStatement","configPath","logger","warn"],"mappings":";;;;;;;;IAeA,OAuCC;eAvC6BA;;IAmDdC,aAAa;eAAbA;;IAqBAC,eAAe;eAAfA;;;wBAjFT;sCACgC;iCAEE;gCACR;qCACG;yBACZ;AACxB,MAAOC,aAAa;AAEL,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,eAAeX,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,QAAQc,gBAAgB,qBAAxBd,0BAA0Be,MAAM,IAAG,GAAG;YACxCL,iBAAiBM,IAAAA,wCAAmB,EAClCN,gBACAV,QAAQc,gBAAgB,EACxBT;QAEJ;QAEAT,KAAKqB,KAAK,CAACZ,QAAQK;IACrB;IAGF,MAAMQ,IAAAA,mBAAW,EAACtB;AACpB;AAEA,SAASW,eAAeX,IAAU,EAAEuB,UAAkB;IACpD,MAAMC,YAAY;QAAC;QAAM;QAAO;QAAM;QAAO;QAAO;KAAM;IAE1D,KAAK,MAAMC,OAAOD,UAAW;QAC3B,IAAIxB,KAAKa,MAAM,CAACa,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC,IAAI;YACpE,OAAOC,IAAAA,yBAAiB,EAACH,YAAY,CAAC,YAAY,EAAEE,IAAI,CAAC;QAC3D;IACF;AACF;AAEO,SAAS5B,cAAc8B,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,SAAS/B,gBAAgBkC,UAAkB;IAChDC,cAAM,CAACC,IAAI,CAAC,CAAC;yBACU,EAAEF,WAAW;uDACiB,EAAEA,WAAW;;;;EAIlE,CAAC;AACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
-
import {
|
|
2
|
+
import { ProxyOptions, ServerOptions } from 'vite';
|
|
3
3
|
import { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';
|
|
4
4
|
/**
|
|
5
5
|
* Returns the path to the vite config file or undefined when not found.
|
|
@@ -14,8 +14,5 @@ export declare function getViteServerProxyConfigPath(nxProxyConfig: string | und
|
|
|
14
14
|
* Builds the options for the vite dev server.
|
|
15
15
|
*/
|
|
16
16
|
export declare function getViteServerOptions(options: ViteDevServerExecutorOptions, context: ExecutorContext): Promise<ServerOptions>;
|
|
17
|
-
|
|
18
|
-
* Builds the options for the vite preview server.
|
|
19
|
-
*/
|
|
20
|
-
export declare function getVitePreviewOptions(options: Record<string, any>, context: ExecutorContext): PreviewOptions;
|
|
17
|
+
export declare function getProxyConfig(context: ExecutorContext, proxyConfig?: string): Record<string, string | ProxyOptions> | undefined;
|
|
21
18
|
export declare function getNxTargetOptions(target: string, context: ExecutorContext): any;
|
|
@@ -18,8 +18,8 @@ _export(exports, {
|
|
|
18
18
|
getViteServerOptions: function() {
|
|
19
19
|
return getViteServerOptions;
|
|
20
20
|
},
|
|
21
|
-
|
|
22
|
-
return
|
|
21
|
+
getProxyConfig: function() {
|
|
22
|
+
return getProxyConfig;
|
|
23
23
|
},
|
|
24
24
|
getNxTargetOptions: function() {
|
|
25
25
|
return getNxTargetOptions;
|
|
@@ -82,14 +82,13 @@ async function getViteServerOptions(options, context) {
|
|
|
82
82
|
}
|
|
83
83
|
return serverOptions;
|
|
84
84
|
}
|
|
85
|
-
function
|
|
86
|
-
const
|
|
87
|
-
const proxyConfigPath = getViteServerProxyConfigPath(options.proxyConfig, context);
|
|
85
|
+
function getProxyConfig(context, proxyConfig) {
|
|
86
|
+
const proxyConfigPath = getViteServerProxyConfigPath(proxyConfig, context);
|
|
88
87
|
if (proxyConfigPath) {
|
|
89
88
|
_devkit.logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);
|
|
90
|
-
|
|
89
|
+
return require(proxyConfigPath);
|
|
91
90
|
}
|
|
92
|
-
return
|
|
91
|
+
return;
|
|
93
92
|
}
|
|
94
93
|
function getNxTargetOptions(target, context) {
|
|
95
94
|
const targetObj = (0, _devkit.parseTargetString)(target, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { ProxyOptions, ServerOptions } from 'vite';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\n\n/**\n * Returns the path to the vite config file or undefined when not found.\n */\nexport function normalizeViteConfigFilePath(\n contextRoot: string,\n projectRoot: string,\n configFile?: string\n): string | undefined {\n if (configFile) {\n const normalized = joinPathFragments(configFile);\n if (!existsSync(normalized)) {\n throw new Error(\n `Could not find vite config at provided path \"${normalized}\".`\n );\n }\n return normalized;\n }\n\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`)\n )\n ) {\n return joinPathFragments(contextRoot, projectRoot, `vite.config.${ext}`);\n } else if (\n existsSync(\n joinPathFragments(contextRoot, projectRoot, `vitest.config.${ext}`)\n )\n ) {\n return joinPathFragments(\n contextRoot,\n projectRoot,\n `vitest.config.${ext}`\n );\n }\n }\n}\n\nexport function getProjectTsConfigPath(\n projectRoot: string\n): string | undefined {\n return existsSync(joinPathFragments(projectRoot, 'tsconfig.app.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.app.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.lib.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.lib.json')\n : existsSync(joinPathFragments(projectRoot, 'tsconfig.json'))\n ? joinPathFragments(projectRoot, 'tsconfig.json')\n : undefined;\n}\n\n/**\n * Returns the path to the proxy configuration file or undefined when not found.\n */\nexport function getViteServerProxyConfigPath(\n nxProxyConfig: string | undefined,\n context: ExecutorContext\n): string | undefined {\n if (nxProxyConfig) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const proxyConfigPath = nxProxyConfig\n ? joinPathFragments(context.root, nxProxyConfig)\n : joinPathFragments(projectRoot, 'proxy.conf.json');\n\n if (existsSync(proxyConfigPath)) {\n return proxyConfigPath;\n }\n }\n}\n\n/**\n * Builds the options for the vite dev server.\n */\nexport async function getViteServerOptions(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): Promise<ServerOptions> {\n // Allows ESM to be required in CJS modules. Vite will be published as ESM in the future.\n const { searchForWorkspaceRoot } = await (Function(\n 'return import(\"vite\")'\n )() as Promise<typeof import('vite')>);\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const serverOptions: ServerOptions = {\n fs: {\n allow: [\n searchForWorkspaceRoot(joinPathFragments(projectRoot)),\n joinPathFragments(context.root, 'node_modules/vite'),\n ],\n },\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\nexport function getProxyConfig(\n context: ExecutorContext,\n proxyConfig?: string\n): Record<string, string | ProxyOptions> | undefined {\n const proxyConfigPath = getViteServerProxyConfigPath(proxyConfig, context);\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n return require(proxyConfigPath);\n }\n return;\n}\n\nexport function getNxTargetOptions(target: string, context: ExecutorContext) {\n const targetObj = parseTargetString(target, context);\n return readTargetOptions(targetObj, context);\n}\n"],"names":["normalizeViteConfigFilePath","getProjectTsConfigPath","getViteServerProxyConfigPath","getViteServerOptions","getProxyConfig","getNxTargetOptions","contextRoot","projectRoot","configFile","normalized","joinPathFragments","existsSync","Error","allowsExt","ext","undefined","nxProxyConfig","context","projectsConfigurations","projects","projectName","root","proxyConfigPath","options","searchForWorkspaceRoot","Function","serverOptions","fs","allow","proxyConfig","logger","info","proxy","require","target","targetObj","parseTargetString","readTargetOptions"],"mappings":";;;;;;;;IAcgBA,2BAA2B;eAA3BA;;IAsCAC,sBAAsB;eAAtBA;;IAeAC,4BAA4B;eAA5BA;;IAqBMC,oBAAoB;eAApBA;;IA+BNC,cAAc;eAAdA;;IAYAC,kBAAkB;eAAlBA;;;wBA7HT;oBACoB;AAOpB,SAASL,4BACdM,WAAmB,EACnBC,WAAmB,EACnBC,UAAmB;IAEnB,IAAIA,YAAY;QACd,MAAMC,aAAaC,IAAAA,yBAAiB,EAACF;QACrC,IAAI,CAACG,IAAAA,cAAU,EAACF,aAAa;YAC3B,MAAM,IAAIG,MACR,CAAC,6CAA6C,EAAEH,WAAW,EAAE,CAAC;QAElE;QACA,OAAOA;IACT;IAEA,MAAMI,YAAY;QAAC;QAAM;QAAO;QAAM;QAAO;QAAO;KAAM;IAE1D,KAAK,MAAMC,OAAOD,UAAW;QAC3B,IACEF,IAAAA,cAAU,EACRD,IAAAA,yBAAiB,EAACJ,aAAaC,aAAa,CAAC,YAAY,EAAEO,IAAI,CAAC,IAElE;YACA,OAAOJ,IAAAA,yBAAiB,EAACJ,aAAaC,aAAa,CAAC,YAAY,EAAEO,IAAI,CAAC;QACzE,OAAO,IACLH,IAAAA,cAAU,EACRD,IAAAA,yBAAiB,EAACJ,aAAaC,aAAa,CAAC,cAAc,EAAEO,IAAI,CAAC,IAEpE;YACA,OAAOJ,IAAAA,yBAAiB,EACtBJ,aACAC,aACA,CAAC,cAAc,EAAEO,IAAI,CAAC;QAE1B;IACF;AACF;AAEO,SAASb,uBACdM,WAAmB;IAEnB,OAAOI,IAAAA,cAAU,EAACD,IAAAA,yBAAiB,EAACH,aAAa,wBAC7CG,IAAAA,yBAAiB,EAACH,aAAa,uBAC/BI,IAAAA,cAAU,EAACD,IAAAA,yBAAiB,EAACH,aAAa,wBAC1CG,IAAAA,yBAAiB,EAACH,aAAa,uBAC/BI,IAAAA,cAAU,EAACD,IAAAA,yBAAiB,EAACH,aAAa,oBAC1CG,IAAAA,yBAAiB,EAACH,aAAa,mBAC/BQ;AACN;AAKO,SAASb,6BACdc,aAAiC,EACjCC,OAAwB;IAExB,IAAID,eAAe;QACjB,MAAMT,cACJU,QAAQC,sBAAsB,CAACC,QAAQ,CAACF,QAAQG,WAAW,CAAC,CAACC,IAAI;QAEnE,MAAMC,kBAAkBN,gBACpBN,IAAAA,yBAAiB,EAACO,QAAQI,IAAI,EAAEL,iBAChCN,IAAAA,yBAAiB,EAACH,aAAa;QAEnC,IAAII,IAAAA,cAAU,EAACW,kBAAkB;YAC/B,OAAOA;QACT;IACF;AACF;AAKO,eAAenB,qBACpBoB,OAAqC,EACrCN,OAAwB;IAExB,yFAAyF;IACzF,MAAM,EAAEO,sBAAsB,EAAE,GAAG,MAAOC,SACxC;IAEF,MAAMlB,cACJU,QAAQC,sBAAsB,CAACC,QAAQ,CAACF,QAAQG,WAAW,CAAC,CAACC,IAAI;IACnE,MAAMK,gBAA+B;QACnCC,IAAI;YACFC,OAAO;gBACLJ,uBAAuBd,IAAAA,yBAAiB,EAACH;gBACzCG,IAAAA,yBAAiB,EAACO,QAAQI,IAAI,EAAE;aACjC;QACH;IACF;IAEA,MAAMC,kBAAkBpB,6BACtBqB,QAAQM,WAAW,EACnBZ;IAEF,IAAIK,iBAAiB;QACnBQ,cAAM,CAACC,IAAI,CAAC,CAAC,kCAAkC,EAAET,gBAAgB,CAAC;QAClEI,cAAcM,KAAK,GAAGC,QAAQX;IAChC;IAEA,OAAOI;AACT;AAEO,SAAStB,eACda,OAAwB,EACxBY,WAAoB;IAEpB,MAAMP,kBAAkBpB,6BAA6B2B,aAAaZ;IAClE,IAAIK,iBAAiB;QACnBQ,cAAM,CAACC,IAAI,CAAC,CAAC,kCAAkC,EAAET,gBAAgB,CAAC;QAClE,OAAOW,QAAQX;IACjB;IACA;AACF;AAEO,SAASjB,mBAAmB6B,MAAc,EAAEjB,OAAwB;IACzE,MAAMkB,YAAYC,IAAAA,yBAAiB,EAACF,QAAQjB;IAC5C,OAAOoB,IAAAA,yBAAiB,EAACF,WAAWlB;AACtC"}
|