@nx/vite 20.0.0-beta.2 → 20.0.0-beta.4
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/vite",
|
|
3
|
-
"version": "20.0.0-beta.
|
|
3
|
+
"version": "20.0.0-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Plugin for building and testing applications using Vite",
|
|
6
6
|
"repository": {
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
"migrations": "./migrations.json"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@nx/devkit": "20.0.0-beta.
|
|
33
|
+
"@nx/devkit": "20.0.0-beta.4",
|
|
34
34
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
35
35
|
"@swc/helpers": "~0.5.0",
|
|
36
36
|
"enquirer": "~2.3.6",
|
|
37
|
-
"@nx/js": "20.0.0-beta.
|
|
37
|
+
"@nx/js": "20.0.0-beta.4",
|
|
38
38
|
"tsconfig-paths": "^4.1.2",
|
|
39
39
|
"minimatch": "9.0.3",
|
|
40
|
-
"@nrwl/vite": "20.0.0-beta.
|
|
40
|
+
"@nrwl/vite": "20.0.0-beta.4"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"vite": "^5.0.0",
|
|
@@ -47,8 +47,9 @@ _export(exports, {
|
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
const _devkit = require("@nx/devkit");
|
|
50
|
-
const _viteconfigeditutils = require("./vite-config-edit-utils");
|
|
51
50
|
const _targetdefaultsutils = require("@nx/devkit/src/generators/target-defaults-utils");
|
|
51
|
+
const _tssolutionsetup = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
|
52
|
+
const _viteconfigeditutils = require("./vite-config-edit-utils");
|
|
52
53
|
function findExistingJsBuildTargetInProject(targets) {
|
|
53
54
|
const output = {};
|
|
54
55
|
const supportedExecutors = {
|
|
@@ -284,41 +285,39 @@ function moveAndEditIndexHtml(tree, options) {
|
|
|
284
285
|
function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasViteTargets, vitestFileName) {
|
|
285
286
|
const { root: projectRoot } = (0, _devkit.readProjectConfiguration)(tree, options.project);
|
|
286
287
|
const viteConfigPath = vitestFileName ? `${projectRoot}/vitest.config.ts` : `${projectRoot}/vite.config.ts`;
|
|
287
|
-
const
|
|
288
|
+
const isUsingTsPlugin = (0, _tssolutionsetup.isUsingTsSolutionSetup)(tree);
|
|
289
|
+
const buildOutDir = isUsingTsPlugin ? './dist' : projectRoot === '.' ? `./dist/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}dist/${projectRoot}`;
|
|
288
290
|
var _options_rollupOptionsExternal;
|
|
289
|
-
const buildOption = onlyVitest ? '' : options.includeLib ? `
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
transformMixedEsModules: true,
|
|
298
|
-
},
|
|
299
|
-
lib: {
|
|
300
|
-
// Could also be a dictionary or array of multiple entry points.
|
|
301
|
-
entry: 'src/index.ts',
|
|
302
|
-
name: '${options.project}',
|
|
303
|
-
fileName: 'index',
|
|
304
|
-
// Change this to the formats you want to support.
|
|
305
|
-
// Don't forget to update your package.json as well.
|
|
306
|
-
formats: ['es', 'cjs']
|
|
307
|
-
},
|
|
308
|
-
rollupOptions: {
|
|
309
|
-
// External packages that should not be bundled into your library.
|
|
310
|
-
external: [${(_options_rollupOptionsExternal = options.rollupOptionsExternal) != null ? _options_rollupOptionsExternal : ''}]
|
|
311
|
-
},
|
|
312
|
-
},` : `
|
|
313
|
-
build: {
|
|
314
|
-
outDir: '${buildOutDir}',
|
|
315
|
-
emptyOutDir: true,
|
|
316
|
-
reportCompressedSize: true,
|
|
317
|
-
commonjsOptions: {
|
|
318
|
-
transformMixedEsModules: true,
|
|
319
|
-
},
|
|
291
|
+
const buildOption = onlyVitest ? '' : options.includeLib ? ` // Configuration for building your library.
|
|
292
|
+
// See: https://vitejs.dev/guide/build.html#library-mode
|
|
293
|
+
build: {
|
|
294
|
+
outDir: '${buildOutDir}',
|
|
295
|
+
emptyOutDir: true,
|
|
296
|
+
reportCompressedSize: true,
|
|
297
|
+
commonjsOptions: {
|
|
298
|
+
transformMixedEsModules: true,
|
|
320
299
|
},
|
|
321
|
-
|
|
300
|
+
lib: {
|
|
301
|
+
// Could also be a dictionary or array of multiple entry points.
|
|
302
|
+
entry: 'src/index.ts',
|
|
303
|
+
name: '${options.project}',
|
|
304
|
+
fileName: 'index',
|
|
305
|
+
// Change this to the formats you want to support.
|
|
306
|
+
// Don't forget to update your package.json as well.
|
|
307
|
+
formats: ['es', 'cjs']
|
|
308
|
+
},
|
|
309
|
+
rollupOptions: {
|
|
310
|
+
// External packages that should not be bundled into your library.
|
|
311
|
+
external: [${(_options_rollupOptionsExternal = options.rollupOptionsExternal) != null ? _options_rollupOptionsExternal : ''}]
|
|
312
|
+
},
|
|
313
|
+
},` : ` build: {
|
|
314
|
+
outDir: '${buildOutDir}',
|
|
315
|
+
emptyOutDir: true,
|
|
316
|
+
reportCompressedSize: true,
|
|
317
|
+
commonjsOptions: {
|
|
318
|
+
transformMixedEsModules: true,
|
|
319
|
+
},
|
|
320
|
+
},`;
|
|
322
321
|
const imports = options.imports ? options.imports : [];
|
|
323
322
|
if (!onlyVitest && options.includeLib) {
|
|
324
323
|
imports.push(`import dts from 'vite-plugin-dts'`, `import * as path from 'path'`);
|
|
@@ -337,62 +336,54 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
|
|
|
337
336
|
}
|
|
338
337
|
const reportsDirectory = projectRoot === '.' ? `./coverage/${options.project}` : `${(0, _devkit.offsetFromRoot)(projectRoot)}coverage/${projectRoot}`;
|
|
339
338
|
var _options_testEnvironment;
|
|
340
|
-
const testOption = options.includeVitest ? `test: {
|
|
339
|
+
const testOption = options.includeVitest ? ` test: {
|
|
341
340
|
watch: false,
|
|
342
341
|
globals: true,
|
|
343
342
|
environment: '${(_options_testEnvironment = options.testEnvironment) != null ? _options_testEnvironment : 'jsdom'}',
|
|
344
|
-
include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}']
|
|
345
|
-
|
|
343
|
+
include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],${options.inSourceTests ? `
|
|
344
|
+
includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],` : ''}
|
|
346
345
|
reporters: ['default'],
|
|
347
346
|
coverage: {
|
|
348
347
|
reportsDirectory: '${reportsDirectory}',
|
|
349
348
|
provider: ${options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`},
|
|
350
349
|
}
|
|
351
350
|
},` : '';
|
|
352
|
-
const defineOption = options.inSourceTests ? `define: {
|
|
351
|
+
const defineOption = options.inSourceTests ? ` define: {
|
|
353
352
|
'import.meta.vitest': undefined
|
|
354
353
|
},` : '';
|
|
355
|
-
const devServerOption = onlyVitest ? '' : options.includeLib ? '' : `
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
// worker: {
|
|
368
|
-
// plugins: [ nxViteTsPaths() ],
|
|
369
|
-
// },`;
|
|
354
|
+
const devServerOption = onlyVitest ? '' : options.includeLib ? '' : ` server:{
|
|
355
|
+
port: 4200,
|
|
356
|
+
host: 'localhost',
|
|
357
|
+
},`;
|
|
358
|
+
const previewServerOption = onlyVitest ? '' : options.includeLib ? '' : ` preview:{
|
|
359
|
+
port: 4300,
|
|
360
|
+
host: 'localhost',
|
|
361
|
+
},`;
|
|
362
|
+
const workerOption = ` // Uncomment this if you are using workers.
|
|
363
|
+
// worker: {
|
|
364
|
+
// plugins: [ nxViteTsPaths() ],
|
|
365
|
+
// },`;
|
|
370
366
|
const cacheDir = `cacheDir: '${normalizedJoinPaths((0, _devkit.offsetFromRoot)(projectRoot), 'node_modules', '.vite', projectRoot === '.' ? options.project : projectRoot)}',`;
|
|
371
367
|
if (tree.exists(viteConfigPath)) {
|
|
372
368
|
handleViteConfigFileExists(tree, viteConfigPath, options, buildOption, buildOutDir, imports, plugins, testOption, reportsDirectory, cacheDir, projectRoot, (0, _devkit.offsetFromRoot)(projectRoot), projectAlreadyHasViteTargets);
|
|
373
369
|
return;
|
|
374
370
|
}
|
|
375
|
-
viteConfigContent =
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
${previewServerOption}
|
|
387
|
-
|
|
388
|
-
plugins: [${plugins.join(',\n')}],
|
|
389
|
-
${workerOption}
|
|
390
|
-
${buildOption}
|
|
391
|
-
${defineOption}
|
|
392
|
-
${testOption}
|
|
393
|
-
});`;
|
|
371
|
+
viteConfigContent = `/// <reference types='vitest' />
|
|
372
|
+
import { defineConfig } from 'vite';
|
|
373
|
+
${imports.join(';\n')}${imports.length ? ';' : ''}
|
|
374
|
+
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
|
|
375
|
+
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
|
|
376
|
+
|
|
377
|
+
export default defineConfig({
|
|
378
|
+
root: __dirname,
|
|
379
|
+
${printOptions(cacheDir, devServerOption, previewServerOption, ` plugins: [${plugins.join(', ')}],`, workerOption, buildOption, defineOption, testOption)}
|
|
380
|
+
});
|
|
381
|
+
`.replace(/\s+(?=(\n|$))/gm, '\n');
|
|
394
382
|
tree.write(viteConfigPath, viteConfigContent);
|
|
395
383
|
}
|
|
384
|
+
function printOptions(...options) {
|
|
385
|
+
return options.filter(Boolean).join('\n');
|
|
386
|
+
}
|
|
396
387
|
function normalizeViteConfigFilePathWithTree(tree, projectRoot, configFile) {
|
|
397
388
|
return configFile && tree.exists(configFile) ? configFile : tree.exists((0, _devkit.joinPathFragments)(`${projectRoot}/vite.config.ts`)) ? (0, _devkit.joinPathFragments)(`${projectRoot}/vite.config.ts`) : tree.exists((0, _devkit.joinPathFragments)(`${projectRoot}/vite.config.js`)) ? (0, _devkit.joinPathFragments)(`${projectRoot}/vite.config.js`) : undefined;
|
|
398
389
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/generator-utils.ts"],"sourcesContent":["import {\n joinPathFragments,\n logger,\n offsetFromRoot,\n readJson,\n readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport { VitestExecutorOptions } from '../executors/test/schema';\nimport { ViteConfigurationGeneratorSchema } from '../generators/configuration/schema';\nimport { ensureViteConfigIsCorrect } from './vite-config-edit-utils';\nimport { addBuildTargetDefaults } from '@nx/devkit/src/generators/target-defaults-utils';\n\nexport type Target = 'build' | 'serve' | 'test' | 'preview';\nexport type TargetFlags = Partial<Record<Target, boolean>>;\nexport type UserProvidedTargetName = Partial<Record<Target, string>>;\nexport type ValidFoundTargetName = Partial<Record<Target, string>>;\n\nexport function findExistingJsBuildTargetInProject(targets: {\n [targetName: string]: TargetConfiguration;\n}): {\n supported?: string;\n unsupported?: string;\n} {\n const output: {\n supported?: string;\n unsupported?: string;\n } = {};\n\n const supportedExecutors = {\n build: ['@nx/js:babel', '@nx/js:swc', '@nx/rollup:rollup'],\n };\n const unsupportedExecutors = [\n '@nx/angular:ng-packagr-lite',\n '@nx/angular:package',\n '@nx/angular:webpack-browser',\n '@nx/esbuild:esbuild',\n '@nx/react-native:run-ios',\n '@nx/react-native:start',\n '@nx/react-native:run-android',\n '@nx/react-native:bundle',\n '@nx/react-native:build-android',\n '@nx/react-native:bundle',\n '@nx/next:build',\n '@nx/js:tsc',\n '@nrwl/angular:ng-packagr-lite',\n '@nrwl/angular:package',\n '@nrwl/angular:webpack-browser',\n '@nrwl/esbuild:esbuild',\n '@nrwl/react-native:run-ios',\n '@nrwl/react-native:start',\n '@nrwl/react-native:run-android',\n '@nrwl/react-native:bundle',\n '@nrwl/react-native:build-android',\n '@nrwl/react-native:bundle',\n '@nrwl/next:build',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:browser-esbuild',\n '@angular-devkit/build-angular:application',\n ];\n\n // We try to find the target that is using the supported executors\n // for build since this is the one we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n if (supportedExecutors.build.includes(executorName)) {\n output.supported = target;\n } else if (unsupportedExecutors.includes(executorName)) {\n output.unsupported = target;\n }\n }\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const reportsDirectory = joinPathFragments(\n offsetFromRoot(project.root),\n 'coverage',\n project.root === '.' ? options.project : project.root\n );\n const testOptions: VitestExecutorOptions = {\n reportsDirectory,\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n project.targets[target].executor = '@nx/vite:test';\n delete project.targets[target].options?.jestConfig;\n } else {\n project.targets[target] = {\n executor: '@nx/vite:test',\n outputs: ['{options.reportsDirectory}'],\n options: testOptions,\n };\n }\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n addBuildTargetDefaults(tree, '@nx/vite:build');\n const project = readProjectConfiguration(tree, options.project);\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n project.targets ??= {};\n project.targets[target] = {\n executor: '@nx/vite:build',\n outputs: ['{options.outputPath}'],\n defaultConfiguration: 'production',\n options: buildOptions,\n configurations: {\n development: {\n mode: 'development',\n },\n production: {\n mode: 'production',\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n project.targets[target] = {\n executor: '@nx/vite:dev-server',\n defaultConfiguration: 'development',\n options: {\n buildTarget: `${options.project}:build`,\n },\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n hmr: true,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n hmr: false,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\n/**\n * Adds a target for the preview server.\n *\n * @param tree\n * @param options\n * @param serveTarget An existing serve target.\n */\nexport function addPreviewTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n serveTarget: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const previewOptions: VitePreviewServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n\n project.targets ??= {};\n\n // Update the options from the passed serve target.\n if (project.targets[serveTarget]) {\n const target = project.targets[serveTarget];\n if (target.executor === '@nxext/vite:dev') {\n previewOptions.proxyConfig = target.options.proxyConfig;\n }\n previewOptions['https'] = target.options?.https;\n previewOptions['open'] = target.options?.open;\n }\n\n // Adds a preview target.\n project.targets.preview = {\n dependsOn: ['build'],\n executor: '@nx/vite:preview-server',\n defaultConfiguration: 'development',\n options: previewOptions,\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function editTsConfig(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n const config = readJson(tree, `${projectConfig.root}/tsconfig.json`);\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n jsx: 'react-jsx',\n allowJs: false,\n esModuleInterop: false,\n allowSyntheticDefaultImports: true,\n strict: true,\n };\n break;\n case 'none':\n config.compilerOptions = {\n module: 'commonjs',\n forceConsistentCasingInFileNames: true,\n strict: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n };\n break;\n default:\n break;\n }\n\n writeJson(tree, `${projectConfig.root}/tsconfig.json`, config);\n}\n\nexport function deleteWebpackConfig(\n tree: Tree,\n projectRoot: string,\n webpackConfigFilePath?: string\n) {\n const webpackConfigPath =\n webpackConfigFilePath && tree.exists(webpackConfigFilePath)\n ? webpackConfigFilePath\n : tree.exists(`${projectRoot}/webpack.config.js`)\n ? `${projectRoot}/webpack.config.js`\n : tree.exists(`${projectRoot}/webpack.config.ts`)\n ? `${projectRoot}/webpack.config.ts`\n : null;\n if (webpackConfigPath) {\n tree.delete(webpackConfigPath);\n }\n}\n\nexport function moveAndEditIndexHtml(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath = `${projectConfig.root}/src/index.html`;\n let mainPath = `${projectConfig.root}/src/main.ts${\n options.uiFramework === 'react' ? 'x' : ''\n }`;\n\n if (projectConfig.root !== '.') {\n mainPath = mainPath.replace(projectConfig.root, '');\n }\n\n if (\n !tree.exists(indexHtmlPath) &&\n tree.exists(`${projectConfig.root}/index.html`)\n ) {\n indexHtmlPath = `${projectConfig.root}/index.html`;\n }\n\n if (tree.exists(indexHtmlPath)) {\n const indexHtmlContent = tree.read(indexHtmlPath, 'utf8');\n if (\n !indexHtmlContent.includes(\n `<script type='module' src='${mainPath}'></script>`\n )\n ) {\n tree.write(\n `${projectConfig.root}/index.html`,\n indexHtmlContent.replace(\n '</body>',\n `<script type='module' src='${mainPath}'></script>\n </body>`\n )\n );\n\n if (tree.exists(`${projectConfig.root}/src/index.html`)) {\n tree.delete(`${projectConfig.root}/src/index.html`);\n }\n }\n } else {\n tree.write(\n `${projectConfig.root}/index.html`,\n `<!DOCTYPE html>\n <html lang='en'>\n <head>\n <meta charset='UTF-8' />\n <link rel='icon' href='/favicon.ico' />\n <meta name='viewport' content='width=device-width, initial-scale=1.0' />\n <title>Vite</title>\n </head>\n <body>\n <div id='root'></div>\n <script type='module' src='${mainPath}'></script>\n </body>\n </html>`\n );\n }\n}\n\nexport interface ViteConfigFileOptions {\n project: string;\n includeLib?: boolean;\n includeVitest?: boolean;\n inSourceTests?: boolean;\n testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;\n rollupOptionsExternal?: string[];\n imports?: string[];\n plugins?: string[];\n coverageProvider?: 'v8' | 'istanbul' | 'custom';\n}\n\nexport function createOrEditViteConfig(\n tree: Tree,\n options: ViteConfigFileOptions,\n onlyVitest: boolean,\n projectAlreadyHasViteTargets?: TargetFlags,\n vitestFileName?: boolean\n) {\n const { root: projectRoot } = readProjectConfiguration(tree, options.project);\n\n const viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.ts`\n : `${projectRoot}/vite.config.ts`;\n\n const buildOutDir =\n projectRoot === '.'\n ? `./dist/${options.project}`\n : `${offsetFromRoot(projectRoot)}dist/${projectRoot}`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? `\n // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n lib: {\n // Could also be a dictionary or array of multiple entry points.\n entry: 'src/index.ts',\n name: '${options.project}',\n fileName: 'index',\n // Change this to the formats you want to support.\n // Don't forget to update your package.json as well.\n formats: ['es', 'cjs']\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : `\n build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },\n `;\n\n const imports: string[] = options.imports ? options.imports : [];\n\n if (!onlyVitest && options.includeLib) {\n imports.push(\n `import dts from 'vite-plugin-dts'`,\n `import * as path from 'path'`\n );\n }\n\n let viteConfigContent = '';\n\n const plugins = options.plugins\n ? [...options.plugins, `nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`]\n : [`nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`];\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })`\n );\n }\n\n const reportsDirectory =\n projectRoot === '.'\n ? `./coverage/${options.project}`\n : `${offsetFromRoot(projectRoot)}coverage/${projectRoot}`;\n\n const testOption = options.includeVitest\n ? `test: {\n watch: false,\n globals: true,\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n ${\n options.inSourceTests\n ? `includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],`\n : ''\n }\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${reportsDirectory}',\n provider: ${\n options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`\n },\n }\n },`\n : '';\n\n const defineOption = options.inSourceTests\n ? `define: {\n 'import.meta.vitest': undefined\n },`\n : '';\n\n const devServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : `\n server:{\n port: 4200,\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : `\n preview:{\n port: 4300,\n host: 'localhost',\n },`;\n\n const workerOption = `\n // Uncomment this if you are using workers. \n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${normalizedJoinPaths(\n offsetFromRoot(projectRoot),\n 'node_modules',\n '.vite',\n projectRoot === '.' ? options.project : projectRoot\n )}',`;\n\n if (tree.exists(viteConfigPath)) {\n handleViteConfigFileExists(\n tree,\n viteConfigPath,\n options,\n buildOption,\n buildOutDir,\n imports,\n plugins,\n testOption,\n reportsDirectory,\n cacheDir,\n projectRoot,\n offsetFromRoot(projectRoot),\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n viteConfigContent = `\n /// <reference types='vitest' />\n import { defineConfig } from 'vite';\n ${imports.join(';\\n')}${imports.length ? ';' : ''}\n import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';\n \n export default defineConfig({\n root: __dirname,\n ${cacheDir}\n ${devServerOption}\n ${previewServerOption}\n \n plugins: [${plugins.join(',\\n')}],\n ${workerOption}\n ${buildOption}\n ${defineOption}\n ${testOption}\n });`;\n\n tree.write(viteConfigPath, viteConfigContent);\n}\n\nexport function normalizeViteConfigFilePathWithTree(\n tree: Tree,\n projectRoot: string,\n configFile?: string\n): string {\n return configFile && tree.exists(configFile)\n ? configFile\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\nexport function getViteConfigPathForProject(\n tree: Tree,\n projectName: string,\n target?: string\n) {\n let viteConfigPath: string | undefined;\n const { targets, root } = readProjectConfiguration(tree, projectName);\n if (target) {\n viteConfigPath = targets?.[target]?.options?.configFile;\n } else {\n const config = Object.values(targets).find(\n (config) =>\n config.executor === '@nrwl/nx:build' ||\n config.executor === '@nrwl/vite:build'\n );\n viteConfigPath = config?.options?.configFile;\n }\n\n return normalizeViteConfigFilePathWithTree(tree, root, viteConfigPath);\n}\n\nexport async function handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported: TargetFlags,\n userProvidedTargetName: UserProvidedTargetName,\n validFoundTargetName: ValidFoundTargetName\n) {\n if (userProvidedTargetIsUnsupported.build && validFoundTargetName.build) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.build,\n validFoundTargetName.build,\n 'build',\n 'build'\n );\n }\n\n if (userProvidedTargetIsUnsupported.serve && validFoundTargetName.serve) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.serve,\n validFoundTargetName.serve,\n 'serve',\n 'dev-server'\n );\n }\n\n if (userProvidedTargetIsUnsupported.test && validFoundTargetName.test) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.test,\n validFoundTargetName.test,\n 'test',\n 'test'\n );\n }\n}\n\nasync function handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName: string,\n validFoundTargetName: string,\n target: Target,\n executor: 'build' | 'dev-server' | 'test'\n) {\n logger.warn(\n `The custom ${target} target you provided (${userProvidedTargetName}) cannot be converted to use the @nx/vite:${executor} executor.\n However, we found the following ${target} target in your project that can be converted: ${validFoundTargetName}\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should we convert the ${validFoundTargetName} target to use the @nx/vite:${executor} executor?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(\n `The ${target} target ${userProvidedTargetName} cannot be converted to use the @nx/vite:${executor} executor.\n Please try again, either by providing a different ${target} target or by not providing a target at all (Nx will\n convert the first one it finds, most probably this one: ${validFoundTargetName})\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n }\n}\n\nexport async function handleUnknownConfiguration(projectName: string) {\n if (process.env.NX_INTERACTIVE === 'false') {\n return;\n }\n\n logger.warn(\n `\n We could not find any configuration in project ${projectName} that \n indicates whether we can definitely convert to Vite.\n \n If you still want to convert your project to use Vite,\n please make sure to commit your changes before running this generator.\n `\n );\n\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should Nx convert your project to use Vite?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that your project can be converted to use Vite.\n Please try again with a different project.\n `);\n }\n}\n\nfunction handleViteConfigFileExists(\n tree: Tree,\n viteConfigPath: string,\n options: ViteConfigFileOptions,\n buildOption: string,\n buildOutDir: string,\n imports: string[],\n plugins: string[],\n testOption: string,\n reportsDirectory: string,\n cacheDir: string,\n projectRoot: string,\n offsetFromRoot: string,\n projectAlreadyHasViteTargets?: TargetFlags\n) {\n if (\n projectAlreadyHasViteTargets?.build &&\n projectAlreadyHasViteTargets?.test\n ) {\n return;\n }\n\n if (process.env.NX_VERBOSE_LOGGING === 'true') {\n logger.info(\n `vite.config.ts already exists for project ${options.project}.`\n );\n }\n\n const buildOptionObject = options.includeLib\n ? {\n lib: {\n entry: 'src/index.ts',\n name: options.project,\n fileName: 'index',\n formats: ['es', 'cjs'],\n },\n rollupOptions: {\n external: options.rollupOptionsExternal ?? [],\n },\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n }\n : {\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n };\n\n const testOptionObject = {\n globals: true,\n environment: options.testEnvironment ?? 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n reporters: ['default'],\n coverage: {\n reportsDirectory: reportsDirectory,\n provider: `${options.coverageProvider ?? 'v8'}`,\n },\n };\n\n const changed = ensureViteConfigIsCorrect(\n tree,\n viteConfigPath,\n buildOption,\n buildOptionObject,\n imports,\n plugins,\n testOption,\n testOptionObject,\n cacheDir,\n projectAlreadyHasViteTargets ?? {}\n );\n\n if (!changed) {\n logger.warn(\n `Make sure the following setting exists in your Vite configuration file (${viteConfigPath}):\n \n ${buildOption}\n \n `\n );\n }\n}\n\nfunction normalizedJoinPaths(...paths: string[]): string {\n const path = joinPathFragments(...paths);\n\n return path.startsWith('.') ? path : `./${path}`;\n}\n"],"names":["addBuildTarget","addOrChangeTestTarget","addPreviewTarget","addServeTarget","createOrEditViteConfig","deleteWebpackConfig","editTsConfig","findExistingJsBuildTargetInProject","getViteConfigPathForProject","handleUnknownConfiguration","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","normalizeViteConfigFilePathWithTree","targets","output","supportedExecutors","build","unsupportedExecutors","target","executorName","executor","includes","supported","unsupported","tree","options","project","readProjectConfiguration","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","jestConfig","outputs","updateProjectConfiguration","addBuildTargetDefaults","buildOptions","outputPath","defaultConfiguration","configurations","development","mode","production","buildTarget","hmr","serveTarget","previewOptions","proxyConfig","https","open","preview","dependsOn","projectConfig","config","readJson","uiFramework","compilerOptions","jsx","allowJs","esModuleInterop","allowSyntheticDefaultImports","strict","module","forceConsistentCasingInFileNames","noImplicitOverride","noPropertyAccessFromIndexSignature","noImplicitReturns","noFallthroughCasesInSwitch","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","exists","delete","indexHtmlPath","mainPath","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","viteConfigPath","buildOutDir","buildOption","includeLib","rollupOptionsExternal","imports","push","viteConfigContent","plugins","testOption","includeVitest","testEnvironment","inSourceTests","coverageProvider","defineOption","devServerOption","previewServerOption","workerOption","cacheDir","normalizedJoinPaths","handleViteConfigFileExists","join","length","configFile","undefined","projectName","Object","values","find","userProvidedTargetIsUnsupported","userProvidedTargetName","validFoundTargetName","handleUnsupportedUserProvidedTargetsErrors","serve","test","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","Error","process","env","NX_INTERACTIVE","NX_VERBOSE_LOGGING","info","buildOptionObject","lib","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","environment","include","reporters","coverage","provider","changed","ensureViteConfigIsCorrect","paths","path","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/generator-utils.ts"],"sourcesContent":["import {\n joinPathFragments,\n logger,\n offsetFromRoot,\n readJson,\n readProjectConfiguration,\n TargetConfiguration,\n Tree,\n updateProjectConfiguration,\n writeJson,\n} from '@nx/devkit';\nimport { addBuildTargetDefaults } from '@nx/devkit/src/generators/target-defaults-utils';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport { VitestExecutorOptions } from '../executors/test/schema';\nimport { ViteConfigurationGeneratorSchema } from '../generators/configuration/schema';\nimport { ensureViteConfigIsCorrect } from './vite-config-edit-utils';\n\nexport type Target = 'build' | 'serve' | 'test' | 'preview';\nexport type TargetFlags = Partial<Record<Target, boolean>>;\nexport type UserProvidedTargetName = Partial<Record<Target, string>>;\nexport type ValidFoundTargetName = Partial<Record<Target, string>>;\n\nexport function findExistingJsBuildTargetInProject(targets: {\n [targetName: string]: TargetConfiguration;\n}): {\n supported?: string;\n unsupported?: string;\n} {\n const output: {\n supported?: string;\n unsupported?: string;\n } = {};\n\n const supportedExecutors = {\n build: ['@nx/js:babel', '@nx/js:swc', '@nx/rollup:rollup'],\n };\n const unsupportedExecutors = [\n '@nx/angular:ng-packagr-lite',\n '@nx/angular:package',\n '@nx/angular:webpack-browser',\n '@nx/esbuild:esbuild',\n '@nx/react-native:run-ios',\n '@nx/react-native:start',\n '@nx/react-native:run-android',\n '@nx/react-native:bundle',\n '@nx/react-native:build-android',\n '@nx/react-native:bundle',\n '@nx/next:build',\n '@nx/js:tsc',\n '@nrwl/angular:ng-packagr-lite',\n '@nrwl/angular:package',\n '@nrwl/angular:webpack-browser',\n '@nrwl/esbuild:esbuild',\n '@nrwl/react-native:run-ios',\n '@nrwl/react-native:start',\n '@nrwl/react-native:run-android',\n '@nrwl/react-native:bundle',\n '@nrwl/react-native:build-android',\n '@nrwl/react-native:bundle',\n '@nrwl/next:build',\n '@nrwl/js:tsc',\n '@angular-devkit/build-angular:browser',\n '@angular-devkit/build-angular:browser-esbuild',\n '@angular-devkit/build-angular:application',\n ];\n\n // We try to find the target that is using the supported executors\n // for build since this is the one we will be converting\n for (const target in targets) {\n const executorName = targets[target].executor;\n if (supportedExecutors.build.includes(executorName)) {\n output.supported = target;\n } else if (unsupportedExecutors.includes(executorName)) {\n output.unsupported = target;\n }\n }\n return output;\n}\n\nexport function addOrChangeTestTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const reportsDirectory = joinPathFragments(\n offsetFromRoot(project.root),\n 'coverage',\n project.root === '.' ? options.project : project.root\n );\n const testOptions: VitestExecutorOptions = {\n reportsDirectory,\n };\n\n project.targets ??= {};\n\n if (project.targets[target]) {\n project.targets[target].executor = '@nx/vite:test';\n delete project.targets[target].options?.jestConfig;\n } else {\n project.targets[target] = {\n executor: '@nx/vite:test',\n outputs: ['{options.reportsDirectory}'],\n options: testOptions,\n };\n }\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addBuildTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n addBuildTargetDefaults(tree, '@nx/vite:build');\n const project = readProjectConfiguration(tree, options.project);\n const buildOptions: ViteBuildExecutorOptions = {\n outputPath: joinPathFragments(\n 'dist',\n project.root != '.' ? project.root : options.project\n ),\n };\n project.targets ??= {};\n project.targets[target] = {\n executor: '@nx/vite:build',\n outputs: ['{options.outputPath}'],\n defaultConfiguration: 'production',\n options: buildOptions,\n configurations: {\n development: {\n mode: 'development',\n },\n production: {\n mode: 'production',\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function addServeTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n target: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n project.targets ??= {};\n\n project.targets[target] = {\n executor: '@nx/vite:dev-server',\n defaultConfiguration: 'development',\n options: {\n buildTarget: `${options.project}:build`,\n },\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n hmr: true,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n hmr: false,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\n/**\n * Adds a target for the preview server.\n *\n * @param tree\n * @param options\n * @param serveTarget An existing serve target.\n */\nexport function addPreviewTarget(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n serveTarget: string\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const previewOptions: VitePreviewServerExecutorOptions = {\n buildTarget: `${options.project}:build`,\n };\n\n project.targets ??= {};\n\n // Update the options from the passed serve target.\n if (project.targets[serveTarget]) {\n const target = project.targets[serveTarget];\n if (target.executor === '@nxext/vite:dev') {\n previewOptions.proxyConfig = target.options.proxyConfig;\n }\n previewOptions['https'] = target.options?.https;\n previewOptions['open'] = target.options?.open;\n }\n\n // Adds a preview target.\n project.targets.preview = {\n dependsOn: ['build'],\n executor: '@nx/vite:preview-server',\n defaultConfiguration: 'development',\n options: previewOptions,\n configurations: {\n development: {\n buildTarget: `${options.project}:build:development`,\n },\n production: {\n buildTarget: `${options.project}:build:production`,\n },\n },\n };\n\n updateProjectConfiguration(tree, options.project, project);\n}\n\nexport function editTsConfig(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n const config = readJson(tree, `${projectConfig.root}/tsconfig.json`);\n\n switch (options.uiFramework) {\n case 'react':\n config.compilerOptions = {\n jsx: 'react-jsx',\n allowJs: false,\n esModuleInterop: false,\n allowSyntheticDefaultImports: true,\n strict: true,\n };\n break;\n case 'none':\n config.compilerOptions = {\n module: 'commonjs',\n forceConsistentCasingInFileNames: true,\n strict: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n };\n break;\n default:\n break;\n }\n\n writeJson(tree, `${projectConfig.root}/tsconfig.json`, config);\n}\n\nexport function deleteWebpackConfig(\n tree: Tree,\n projectRoot: string,\n webpackConfigFilePath?: string\n) {\n const webpackConfigPath =\n webpackConfigFilePath && tree.exists(webpackConfigFilePath)\n ? webpackConfigFilePath\n : tree.exists(`${projectRoot}/webpack.config.js`)\n ? `${projectRoot}/webpack.config.js`\n : tree.exists(`${projectRoot}/webpack.config.ts`)\n ? `${projectRoot}/webpack.config.ts`\n : null;\n if (webpackConfigPath) {\n tree.delete(webpackConfigPath);\n }\n}\n\nexport function moveAndEditIndexHtml(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const projectConfig = readProjectConfiguration(tree, options.project);\n\n let indexHtmlPath = `${projectConfig.root}/src/index.html`;\n let mainPath = `${projectConfig.root}/src/main.ts${\n options.uiFramework === 'react' ? 'x' : ''\n }`;\n\n if (projectConfig.root !== '.') {\n mainPath = mainPath.replace(projectConfig.root, '');\n }\n\n if (\n !tree.exists(indexHtmlPath) &&\n tree.exists(`${projectConfig.root}/index.html`)\n ) {\n indexHtmlPath = `${projectConfig.root}/index.html`;\n }\n\n if (tree.exists(indexHtmlPath)) {\n const indexHtmlContent = tree.read(indexHtmlPath, 'utf8');\n if (\n !indexHtmlContent.includes(\n `<script type='module' src='${mainPath}'></script>`\n )\n ) {\n tree.write(\n `${projectConfig.root}/index.html`,\n indexHtmlContent.replace(\n '</body>',\n `<script type='module' src='${mainPath}'></script>\n </body>`\n )\n );\n\n if (tree.exists(`${projectConfig.root}/src/index.html`)) {\n tree.delete(`${projectConfig.root}/src/index.html`);\n }\n }\n } else {\n tree.write(\n `${projectConfig.root}/index.html`,\n `<!DOCTYPE html>\n <html lang='en'>\n <head>\n <meta charset='UTF-8' />\n <link rel='icon' href='/favicon.ico' />\n <meta name='viewport' content='width=device-width, initial-scale=1.0' />\n <title>Vite</title>\n </head>\n <body>\n <div id='root'></div>\n <script type='module' src='${mainPath}'></script>\n </body>\n </html>`\n );\n }\n}\n\nexport interface ViteConfigFileOptions {\n project: string;\n includeLib?: boolean;\n includeVitest?: boolean;\n inSourceTests?: boolean;\n testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;\n rollupOptionsExternal?: string[];\n imports?: string[];\n plugins?: string[];\n coverageProvider?: 'v8' | 'istanbul' | 'custom';\n}\n\nexport function createOrEditViteConfig(\n tree: Tree,\n options: ViteConfigFileOptions,\n onlyVitest: boolean,\n projectAlreadyHasViteTargets?: TargetFlags,\n vitestFileName?: boolean\n) {\n const { root: projectRoot } = readProjectConfiguration(tree, options.project);\n\n const viteConfigPath = vitestFileName\n ? `${projectRoot}/vitest.config.ts`\n : `${projectRoot}/vite.config.ts`;\n\n const isUsingTsPlugin = isUsingTsSolutionSetup(tree);\n const buildOutDir = isUsingTsPlugin\n ? './dist'\n : projectRoot === '.'\n ? `./dist/${options.project}`\n : `${offsetFromRoot(projectRoot)}dist/${projectRoot}`;\n\n const buildOption = onlyVitest\n ? ''\n : options.includeLib\n ? ` // Configuration for building your library.\n // See: https://vitejs.dev/guide/build.html#library-mode\n build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n lib: {\n // Could also be a dictionary or array of multiple entry points.\n entry: 'src/index.ts',\n name: '${options.project}',\n fileName: 'index',\n // Change this to the formats you want to support.\n // Don't forget to update your package.json as well.\n formats: ['es', 'cjs']\n },\n rollupOptions: {\n // External packages that should not be bundled into your library.\n external: [${options.rollupOptionsExternal ?? ''}]\n },\n },`\n : ` build: {\n outDir: '${buildOutDir}',\n emptyOutDir: true,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n },`;\n\n const imports: string[] = options.imports ? options.imports : [];\n\n if (!onlyVitest && options.includeLib) {\n imports.push(\n `import dts from 'vite-plugin-dts'`,\n `import * as path from 'path'`\n );\n }\n\n let viteConfigContent = '';\n\n const plugins = options.plugins\n ? [...options.plugins, `nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`]\n : [`nxViteTsPaths()`, `nxCopyAssetsPlugin(['*.md'])`];\n\n if (!onlyVitest && options.includeLib) {\n plugins.push(\n `dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })`\n );\n }\n\n const reportsDirectory =\n projectRoot === '.'\n ? `./coverage/${options.project}`\n : `${offsetFromRoot(projectRoot)}coverage/${projectRoot}`;\n\n const testOption = options.includeVitest\n ? ` test: {\n watch: false,\n globals: true,\n environment: '${options.testEnvironment ?? 'jsdom'}',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],${\n options.inSourceTests\n ? `\n includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],`\n : ''\n }\n reporters: ['default'],\n coverage: {\n reportsDirectory: '${reportsDirectory}',\n provider: ${\n options.coverageProvider ? `'${options.coverageProvider}'` : `'v8'`\n },\n }\n },`\n : '';\n\n const defineOption = options.inSourceTests\n ? ` define: {\n 'import.meta.vitest': undefined\n },`\n : '';\n\n const devServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` server:{\n port: 4200,\n host: 'localhost',\n },`;\n\n const previewServerOption = onlyVitest\n ? ''\n : options.includeLib\n ? ''\n : ` preview:{\n port: 4300,\n host: 'localhost',\n },`;\n\n const workerOption = ` // Uncomment this if you are using workers.\n // worker: {\n // plugins: [ nxViteTsPaths() ],\n // },`;\n\n const cacheDir = `cacheDir: '${normalizedJoinPaths(\n offsetFromRoot(projectRoot),\n 'node_modules',\n '.vite',\n projectRoot === '.' ? options.project : projectRoot\n )}',`;\n\n if (tree.exists(viteConfigPath)) {\n handleViteConfigFileExists(\n tree,\n viteConfigPath,\n options,\n buildOption,\n buildOutDir,\n imports,\n plugins,\n testOption,\n reportsDirectory,\n cacheDir,\n projectRoot,\n offsetFromRoot(projectRoot),\n projectAlreadyHasViteTargets\n );\n return;\n }\n\n viteConfigContent = `/// <reference types='vitest' />\nimport { defineConfig } from 'vite';\n${imports.join(';\\n')}${imports.length ? ';' : ''}\nimport { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\nimport { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';\n\nexport default defineConfig({\n root: __dirname,\n ${printOptions(\n cacheDir,\n devServerOption,\n previewServerOption,\n ` plugins: [${plugins.join(', ')}],`,\n workerOption,\n buildOption,\n defineOption,\n testOption\n )}\n});\n`.replace(/\\s+(?=(\\n|$))/gm, '\\n');\n\n tree.write(viteConfigPath, viteConfigContent);\n}\n\nfunction printOptions(...options: string[]): string {\n return options.filter(Boolean).join('\\n');\n}\n\nexport function normalizeViteConfigFilePathWithTree(\n tree: Tree,\n projectRoot: string,\n configFile?: string\n): string {\n return configFile && tree.exists(configFile)\n ? configFile\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : tree.exists(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\nexport function getViteConfigPathForProject(\n tree: Tree,\n projectName: string,\n target?: string\n) {\n let viteConfigPath: string | undefined;\n const { targets, root } = readProjectConfiguration(tree, projectName);\n if (target) {\n viteConfigPath = targets?.[target]?.options?.configFile;\n } else {\n const config = Object.values(targets).find(\n (config) =>\n config.executor === '@nrwl/nx:build' ||\n config.executor === '@nrwl/vite:build'\n );\n viteConfigPath = config?.options?.configFile;\n }\n\n return normalizeViteConfigFilePathWithTree(tree, root, viteConfigPath);\n}\n\nexport async function handleUnsupportedUserProvidedTargets(\n userProvidedTargetIsUnsupported: TargetFlags,\n userProvidedTargetName: UserProvidedTargetName,\n validFoundTargetName: ValidFoundTargetName\n) {\n if (userProvidedTargetIsUnsupported.build && validFoundTargetName.build) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.build,\n validFoundTargetName.build,\n 'build',\n 'build'\n );\n }\n\n if (userProvidedTargetIsUnsupported.serve && validFoundTargetName.serve) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.serve,\n validFoundTargetName.serve,\n 'serve',\n 'dev-server'\n );\n }\n\n if (userProvidedTargetIsUnsupported.test && validFoundTargetName.test) {\n await handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName.test,\n validFoundTargetName.test,\n 'test',\n 'test'\n );\n }\n}\n\nasync function handleUnsupportedUserProvidedTargetsErrors(\n userProvidedTargetName: string,\n validFoundTargetName: string,\n target: Target,\n executor: 'build' | 'dev-server' | 'test'\n) {\n logger.warn(\n `The custom ${target} target you provided (${userProvidedTargetName}) cannot be converted to use the @nx/vite:${executor} executor.\n However, we found the following ${target} target in your project that can be converted: ${validFoundTargetName}\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should we convert the ${validFoundTargetName} target to use the @nx/vite:${executor} executor?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(\n `The ${target} target ${userProvidedTargetName} cannot be converted to use the @nx/vite:${executor} executor.\n Please try again, either by providing a different ${target} target or by not providing a target at all (Nx will\n convert the first one it finds, most probably this one: ${validFoundTargetName})\n\n Please note that converting a potentially non-compatible project to use Vite.js may result in unexpected behavior. Always commit\n your changes before converting a project to use Vite.js, and test the converted project thoroughly before deploying it.\n `\n );\n }\n}\n\nexport async function handleUnknownConfiguration(projectName: string) {\n if (process.env.NX_INTERACTIVE === 'false') {\n return;\n }\n\n logger.warn(\n `\n We could not find any configuration in project ${projectName} that \n indicates whether we can definitely convert to Vite.\n \n If you still want to convert your project to use Vite,\n please make sure to commit your changes before running this generator.\n `\n );\n\n const { Confirm } = require('enquirer');\n const prompt = new Confirm({\n name: 'question',\n message: `Should Nx convert your project to use Vite?`,\n initial: true,\n });\n const shouldConvert = await prompt.run();\n if (!shouldConvert) {\n throw new Error(`\n Nx could not verify that your project can be converted to use Vite.\n Please try again with a different project.\n `);\n }\n}\n\nfunction handleViteConfigFileExists(\n tree: Tree,\n viteConfigPath: string,\n options: ViteConfigFileOptions,\n buildOption: string,\n buildOutDir: string,\n imports: string[],\n plugins: string[],\n testOption: string,\n reportsDirectory: string,\n cacheDir: string,\n projectRoot: string,\n offsetFromRoot: string,\n projectAlreadyHasViteTargets?: TargetFlags\n) {\n if (\n projectAlreadyHasViteTargets?.build &&\n projectAlreadyHasViteTargets?.test\n ) {\n return;\n }\n\n if (process.env.NX_VERBOSE_LOGGING === 'true') {\n logger.info(\n `vite.config.ts already exists for project ${options.project}.`\n );\n }\n\n const buildOptionObject = options.includeLib\n ? {\n lib: {\n entry: 'src/index.ts',\n name: options.project,\n fileName: 'index',\n formats: ['es', 'cjs'],\n },\n rollupOptions: {\n external: options.rollupOptionsExternal ?? [],\n },\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n }\n : {\n outDir: buildOutDir,\n reportCompressedSize: true,\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n };\n\n const testOptionObject = {\n globals: true,\n environment: options.testEnvironment ?? 'jsdom',\n include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n reporters: ['default'],\n coverage: {\n reportsDirectory: reportsDirectory,\n provider: `${options.coverageProvider ?? 'v8'}`,\n },\n };\n\n const changed = ensureViteConfigIsCorrect(\n tree,\n viteConfigPath,\n buildOption,\n buildOptionObject,\n imports,\n plugins,\n testOption,\n testOptionObject,\n cacheDir,\n projectAlreadyHasViteTargets ?? {}\n );\n\n if (!changed) {\n logger.warn(\n `Make sure the following setting exists in your Vite configuration file (${viteConfigPath}):\n \n ${buildOption}\n \n `\n );\n }\n}\n\nfunction normalizedJoinPaths(...paths: string[]): string {\n const path = joinPathFragments(...paths);\n\n return path.startsWith('.') ? path : `./${path}`;\n}\n"],"names":["addBuildTarget","addOrChangeTestTarget","addPreviewTarget","addServeTarget","createOrEditViteConfig","deleteWebpackConfig","editTsConfig","findExistingJsBuildTargetInProject","getViteConfigPathForProject","handleUnknownConfiguration","handleUnsupportedUserProvidedTargets","moveAndEditIndexHtml","normalizeViteConfigFilePathWithTree","targets","output","supportedExecutors","build","unsupportedExecutors","target","executorName","executor","includes","supported","unsupported","tree","options","project","readProjectConfiguration","reportsDirectory","joinPathFragments","offsetFromRoot","root","testOptions","jestConfig","outputs","updateProjectConfiguration","addBuildTargetDefaults","buildOptions","outputPath","defaultConfiguration","configurations","development","mode","production","buildTarget","hmr","serveTarget","previewOptions","proxyConfig","https","open","preview","dependsOn","projectConfig","config","readJson","uiFramework","compilerOptions","jsx","allowJs","esModuleInterop","allowSyntheticDefaultImports","strict","module","forceConsistentCasingInFileNames","noImplicitOverride","noPropertyAccessFromIndexSignature","noImplicitReturns","noFallthroughCasesInSwitch","writeJson","projectRoot","webpackConfigFilePath","webpackConfigPath","exists","delete","indexHtmlPath","mainPath","replace","indexHtmlContent","read","write","onlyVitest","projectAlreadyHasViteTargets","vitestFileName","viteConfigPath","isUsingTsPlugin","isUsingTsSolutionSetup","buildOutDir","buildOption","includeLib","rollupOptionsExternal","imports","push","viteConfigContent","plugins","testOption","includeVitest","testEnvironment","inSourceTests","coverageProvider","defineOption","devServerOption","previewServerOption","workerOption","cacheDir","normalizedJoinPaths","handleViteConfigFileExists","join","length","printOptions","filter","Boolean","configFile","undefined","projectName","Object","values","find","userProvidedTargetIsUnsupported","userProvidedTargetName","validFoundTargetName","handleUnsupportedUserProvidedTargetsErrors","serve","test","logger","warn","Confirm","require","prompt","name","message","initial","shouldConvert","run","Error","process","env","NX_INTERACTIVE","NX_VERBOSE_LOGGING","info","buildOptionObject","lib","entry","fileName","formats","rollupOptions","external","outDir","reportCompressedSize","commonjsOptions","transformMixedEsModules","testOptionObject","globals","environment","include","reporters","coverage","provider","changed","ensureViteConfigIsCorrect","paths","path","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -38,15 +38,16 @@ function handleBuildOrTestNode(updatedFileContent, configContentString, configCo
|
|
|
38
38
|
for (const prop of existingProperties){
|
|
39
39
|
const propName = prop.name.getText();
|
|
40
40
|
if (!configContentObject[propName] && propName !== 'dir' && propName !== 'reportsDirectory' && propName !== 'provider') {
|
|
41
|
-
|
|
41
|
+
// NOTE: Watch for formatting.
|
|
42
|
+
updatedPropsString += ` '${propName}': ${prop.initializer.getText()},\n`;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
for (const [propName, propValue] of Object.entries(configContentObject)){
|
|
45
|
-
|
|
46
|
+
// NOTE: Watch for formatting.
|
|
47
|
+
updatedPropsString += ` '${propName}': ${JSON.stringify(propValue)},\n`;
|
|
46
48
|
}
|
|
47
49
|
return `${name}: {
|
|
48
|
-
|
|
49
|
-
}`;
|
|
50
|
+
${updatedPropsString} }`;
|
|
50
51
|
});
|
|
51
52
|
} else {
|
|
52
53
|
const foundDefineConfig = tsquery.query(updatedFileContent, 'CallExpression:has(Identifier[name="defineConfig"])');
|
|
@@ -180,11 +181,11 @@ function handlePluginNode(appFileContent, imports, plugins) {
|
|
|
180
181
|
var _found__elements;
|
|
181
182
|
const existingPluginNodes = (_found__elements = found == null ? void 0 : found[0].elements) != null ? _found__elements : [];
|
|
182
183
|
for (const plugin of existingPluginNodes){
|
|
183
|
-
updatedPluginsString += `${plugin.getText()}
|
|
184
|
+
updatedPluginsString += `${plugin.getText()}, `;
|
|
184
185
|
}
|
|
185
186
|
for (const plugin of plugins){
|
|
186
187
|
if (!(existingPluginNodes == null ? void 0 : existingPluginNodes.some((node)=>node.getText().includes(plugin)))) {
|
|
187
|
-
updatedPluginsString += `${plugin}
|
|
188
|
+
updatedPluginsString += `${plugin}, `;
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
191
|
return `plugins: [${updatedPluginsString}]`;
|
|
@@ -207,7 +208,7 @@ function handlePluginNode(appFileContent, imports, plugins) {
|
|
|
207
208
|
{
|
|
208
209
|
type: _devkit.ChangeType.Insert,
|
|
209
210
|
index: propertyAssignments[0].getStart(),
|
|
210
|
-
text: `plugins: [${plugins.join('
|
|
211
|
+
text: `plugins: [${plugins.join(', ')}],`
|
|
211
212
|
}
|
|
212
213
|
]);
|
|
213
214
|
writeFile = true;
|
|
@@ -216,7 +217,7 @@ function handlePluginNode(appFileContent, imports, plugins) {
|
|
|
216
217
|
{
|
|
217
218
|
type: _devkit.ChangeType.Insert,
|
|
218
219
|
index: foundDefineConfig[0].getStart() + 14,
|
|
219
|
-
text: `plugins: [${plugins.join('
|
|
220
|
+
text: `plugins: [${plugins.join(', ')}],`
|
|
220
221
|
}
|
|
221
222
|
]);
|
|
222
223
|
writeFile = true;
|
|
@@ -233,7 +234,7 @@ function handlePluginNode(appFileContent, imports, plugins) {
|
|
|
233
234
|
{
|
|
234
235
|
type: _devkit.ChangeType.Insert,
|
|
235
236
|
index: startOfObject + 1,
|
|
236
|
-
text: `plugins: [${plugins.join('
|
|
237
|
+
text: `plugins: [${plugins.join(', ')}],`
|
|
237
238
|
}
|
|
238
239
|
]);
|
|
239
240
|
writeFile = true;
|
|
@@ -244,7 +245,7 @@ function handlePluginNode(appFileContent, imports, plugins) {
|
|
|
244
245
|
}
|
|
245
246
|
if (writeFile) {
|
|
246
247
|
const filteredImports = filterImport(appFileContent, imports);
|
|
247
|
-
return filteredImports.join('
|
|
248
|
+
return filteredImports.join(';\n') + '\n' + appFileContent;
|
|
248
249
|
}
|
|
249
250
|
}
|
|
250
251
|
function filterImport(appFileContent, imports) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/vite-config-edit-utils.ts"],"sourcesContent":["import { applyChangesToString, ChangeType, Tree } from '@nx/devkit';\nimport { findNodes } from '@nx/js';\nimport { TargetFlags } from './generator-utils';\nimport type {\n ArrayLiteralExpression,\n Node,\n PropertyAssignment,\n ReturnStatement,\n} from 'typescript';\n\nexport function ensureViteConfigIsCorrect(\n tree: Tree,\n path: string,\n buildConfigString: string,\n buildConfigObject: {},\n imports: string[],\n plugins: string[],\n testConfigString: string,\n testConfigObject: {},\n cacheDir: string,\n projectAlreadyHasViteTargets?: TargetFlags\n): boolean {\n const fileContent = tree.read(path, 'utf-8');\n\n let updatedContent = undefined;\n\n if (!projectAlreadyHasViteTargets?.test && testConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n fileContent,\n testConfigString,\n testConfigObject,\n 'test'\n );\n }\n\n if (!projectAlreadyHasViteTargets?.build && buildConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n updatedContent ?? fileContent,\n buildConfigString,\n buildConfigObject,\n 'build'\n );\n }\n\n updatedContent =\n handlePluginNode(updatedContent ?? fileContent, imports, plugins) ??\n updatedContent;\n\n if (cacheDir?.length) {\n updatedContent = handleCacheDirNode(\n updatedContent ?? fileContent,\n cacheDir\n );\n }\n\n if (updatedContent) {\n tree.write(path, updatedContent);\n return true;\n } else {\n return false;\n }\n}\n\nfunction handleBuildOrTestNode(\n updatedFileContent: string,\n configContentString: string,\n configContentObject: {},\n name: 'build' | 'test'\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const buildOrTestNode = tsquery.query(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`\n );\n\n if (buildOrTestNode.length) {\n return tsquery.replace(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`,\n (node: PropertyAssignment) => {\n const existingProperties = tsquery.query(\n node.initializer,\n 'PropertyAssignment'\n ) as PropertyAssignment[];\n let updatedPropsString = '';\n for (const prop of existingProperties) {\n const propName = prop.name.getText();\n if (\n !configContentObject[propName] &&\n propName !== 'dir' &&\n propName !== 'reportsDirectory' &&\n propName !== 'provider'\n ) {\n updatedPropsString += `'${propName}': ${prop.initializer.getText()},\\n`;\n }\n }\n for (const [propName, propValue] of Object.entries(\n configContentObject\n )) {\n updatedPropsString += `'${propName}': ${JSON.stringify(\n propValue\n )},\\n`;\n }\n return `${name}: {\n ${updatedPropsString}\n }`;\n }\n );\n } else {\n const foundDefineConfig = tsquery.query(\n updatedFileContent,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n if (name === 'build') {\n return transformConditionalConfig(\n conditionalConfig,\n updatedFileContent,\n configContentString\n );\n } else {\n // no test config in conditional config\n return updatedFileContent;\n }\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: configContentString,\n },\n ]);\n } else {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: configContentString,\n },\n ]);\n }\n }\n } else {\n // build config does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(\n updatedFileContent,\n 'ExportAssignment'\n );\n const found = tsquery.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: configContentString,\n },\n ]);\n } catch {\n return updatedFileContent;\n }\n }\n }\n}\n\nfunction transformCurrentBuildObject(\n index: number,\n returnStatements: ReturnStatement[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n if (!returnStatements?.[index]) {\n return undefined;\n }\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const currentBuildObject = tsquery\n .query(returnStatements[index], 'ObjectLiteralExpression')?.[0]\n .getText();\n\n const currentBuildObjectStart = returnStatements[index].getStart();\n const currentBuildObjectEnd = returnStatements[index].getEnd();\n const newReturnObject = tsquery.replace(\n returnStatements[index].getText(),\n 'ObjectLiteralExpression',\n (_node: Node) => {\n return `{\n ...${currentBuildObject},\n ...${JSON.stringify(buildConfigObject)}\n }`;\n }\n );\n\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Delete,\n start: currentBuildObjectStart,\n length: currentBuildObjectEnd - currentBuildObjectStart,\n },\n {\n type: ChangeType.Insert,\n index: currentBuildObjectStart,\n text: newReturnObject,\n },\n ]);\n\n return newContents;\n}\n\nfunction transformConditionalConfig(\n conditionalConfig: Node[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const { SyntaxKind } = require('typescript');\n const functionBlock = tsquery.query(conditionalConfig[0], 'Block');\n const ifStatement = tsquery.query(functionBlock?.[0], 'IfStatement');\n\n const binaryExpressions = tsquery.query(ifStatement?.[0], 'BinaryExpression');\n\n const buildExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const buildExistsExpressionIndex = binaryExpressions?.findIndex(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const serveExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'serve'`\n );\n\n const elseKeywordExists = findNodes(ifStatement?.[0], SyntaxKind.ElseKeyword);\n const returnStatements: ReturnStatement[] = tsquery.query(\n ifStatement[0],\n 'ReturnStatement'\n );\n\n if (!buildExists) {\n if (serveExists && elseKeywordExists) {\n // build options live inside the else block\n return (\n transformCurrentBuildObject(\n returnStatements?.length - 1,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n } else {\n // no build options exist yet\n const functionBlockStart = functionBlock?.[0].getStart();\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: functionBlockStart + 1,\n text: `\n if (command === 'build') {\n return ${JSON.stringify(buildConfigObject)}\n }\n `,\n },\n ]);\n return newContents;\n }\n } else {\n // build already exists\n // it will be the return statement which lives\n // at the buildExistsExpressionIndex\n\n return (\n transformCurrentBuildObject(\n buildExistsExpressionIndex,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n }\n}\n\nfunction handlePluginNode(\n appFileContent: string,\n imports: string[],\n plugins: string[]\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const pluginsNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n let writeFile = false;\n\n if (pluginsNode.length) {\n appFileContent = tsquery.replace(\n file.getText(),\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])',\n (node: Node) => {\n const found = tsquery.query(\n node,\n 'ArrayLiteralExpression'\n ) as ArrayLiteralExpression[];\n let updatedPluginsString = '';\n\n const existingPluginNodes = found?.[0].elements ?? [];\n\n for (const plugin of existingPluginNodes) {\n updatedPluginsString += `${plugin.getText()},\\n`;\n }\n\n for (const plugin of plugins) {\n if (\n !existingPluginNodes?.some((node) =>\n node.getText().includes(plugin)\n )\n ) {\n updatedPluginsString += `${plugin},\\n`;\n }\n }\n\n return `plugins: [${updatedPluginsString}]`;\n }\n );\n writeFile = true;\n } else {\n // Plugins node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with plugins\n writeFile = false;\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n }\n }\n } else {\n // Plugins option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: `plugins: [${plugins.join(',\\n')}],`,\n },\n ]);\n writeFile = true;\n } catch {\n writeFile = false;\n }\n }\n }\n if (writeFile) {\n const filteredImports = filterImport(appFileContent, imports);\n return filteredImports.join(';') + '\\n' + appFileContent;\n }\n}\n\nfunction filterImport(appFileContent: string, imports: string[]): string[] {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const importNodes = tsquery.query(\n file,\n ':matches(ImportDeclaration, VariableStatement)'\n );\n\n const importsArrayExisting = importNodes?.map((node) => {\n return node.getText().slice(0, -1);\n });\n\n return imports.filter((importString) => {\n return !importsArrayExisting?.includes(importString);\n });\n}\n\nfunction handleCacheDirNode(appFileContent: string, cacheDir: string): string {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n\n const file = tsquery.ast(appFileContent);\n const cacheDirNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"cacheDir\"])'\n );\n\n if (!cacheDirNode?.length || cacheDirNode?.length === 0) {\n // cacheDir node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with cacheDir\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: cacheDir,\n },\n ]);\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: cacheDir,\n },\n ]);\n }\n }\n } else {\n // cacheDir option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: cacheDir,\n },\n ]);\n } catch {}\n }\n }\n\n return appFileContent;\n}\n"],"names":["ensureViteConfigIsCorrect","tree","path","buildConfigString","buildConfigObject","imports","plugins","testConfigString","testConfigObject","cacheDir","projectAlreadyHasViteTargets","fileContent","read","updatedContent","undefined","test","length","handleBuildOrTestNode","build","handlePluginNode","handleCacheDirNode","write","updatedFileContent","configContentString","configContentObject","name","tsquery","require","buildOrTestNode","query","replace","node","existingProperties","initializer","updatedPropsString","prop","propName","getText","propValue","Object","entries","JSON","stringify","foundDefineConfig","conditionalConfig","transformConditionalConfig","propertyAssignments","applyChangesToString","type","ChangeType","Insert","index","getStart","text","defaultExport","found","startOfObject","transformCurrentBuildObject","returnStatements","appFileContent","currentBuildObject","currentBuildObjectStart","currentBuildObjectEnd","getEnd","newReturnObject","_node","newContents","Delete","start","SyntaxKind","functionBlock","ifStatement","binaryExpressions","buildExists","find","binaryExpression","buildExistsExpressionIndex","findIndex","serveExists","elseKeywordExists","findNodes","ElseKeyword","functionBlockStart","file","ast","pluginsNode","writeFile","updatedPluginsString","existingPluginNodes","elements","plugin","some","includes","join","filteredImports","filterImport","importNodes","importsArrayExisting","map","slice","filter","importString","cacheDirNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/vite-config-edit-utils.ts"],"sourcesContent":["import { applyChangesToString, ChangeType, Tree } from '@nx/devkit';\nimport { findNodes } from '@nx/js';\nimport { TargetFlags } from './generator-utils';\nimport type {\n ArrayLiteralExpression,\n Node,\n PropertyAssignment,\n ReturnStatement,\n} from 'typescript';\n\nexport function ensureViteConfigIsCorrect(\n tree: Tree,\n path: string,\n buildConfigString: string,\n buildConfigObject: {},\n imports: string[],\n plugins: string[],\n testConfigString: string,\n testConfigObject: {},\n cacheDir: string,\n projectAlreadyHasViteTargets?: TargetFlags\n): boolean {\n const fileContent = tree.read(path, 'utf-8');\n\n let updatedContent = undefined;\n\n if (!projectAlreadyHasViteTargets?.test && testConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n fileContent,\n testConfigString,\n testConfigObject,\n 'test'\n );\n }\n\n if (!projectAlreadyHasViteTargets?.build && buildConfigString?.length) {\n updatedContent = handleBuildOrTestNode(\n updatedContent ?? fileContent,\n buildConfigString,\n buildConfigObject,\n 'build'\n );\n }\n\n updatedContent =\n handlePluginNode(updatedContent ?? fileContent, imports, plugins) ??\n updatedContent;\n\n if (cacheDir?.length) {\n updatedContent = handleCacheDirNode(\n updatedContent ?? fileContent,\n cacheDir\n );\n }\n\n if (updatedContent) {\n tree.write(path, updatedContent);\n return true;\n } else {\n return false;\n }\n}\n\nfunction handleBuildOrTestNode(\n updatedFileContent: string,\n configContentString: string,\n configContentObject: {},\n name: 'build' | 'test'\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const buildOrTestNode = tsquery.query(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`\n );\n\n if (buildOrTestNode.length) {\n return tsquery.replace(\n updatedFileContent,\n `PropertyAssignment:has(Identifier[name=\"${name}\"])`,\n (node: PropertyAssignment) => {\n const existingProperties = tsquery.query(\n node.initializer,\n 'PropertyAssignment'\n ) as PropertyAssignment[];\n let updatedPropsString = '';\n for (const prop of existingProperties) {\n const propName = prop.name.getText();\n if (\n !configContentObject[propName] &&\n propName !== 'dir' &&\n propName !== 'reportsDirectory' &&\n propName !== 'provider'\n ) {\n // NOTE: Watch for formatting.\n updatedPropsString += ` '${propName}': ${prop.initializer.getText()},\\n`;\n }\n }\n for (const [propName, propValue] of Object.entries(\n configContentObject\n )) {\n // NOTE: Watch for formatting.\n updatedPropsString += ` '${propName}': ${JSON.stringify(\n propValue\n )},\\n`;\n }\n return `${name}: {\n${updatedPropsString} }`;\n }\n );\n } else {\n const foundDefineConfig = tsquery.query(\n updatedFileContent,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n if (name === 'build') {\n return transformConditionalConfig(\n conditionalConfig,\n updatedFileContent,\n configContentString\n );\n } else {\n // no test config in conditional config\n return updatedFileContent;\n }\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: configContentString,\n },\n ]);\n } else {\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: configContentString,\n },\n ]);\n }\n }\n } else {\n // build config does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(\n updatedFileContent,\n 'ExportAssignment'\n );\n const found = tsquery.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n return applyChangesToString(updatedFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: configContentString,\n },\n ]);\n } catch {\n return updatedFileContent;\n }\n }\n }\n}\n\nfunction transformCurrentBuildObject(\n index: number,\n returnStatements: ReturnStatement[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n if (!returnStatements?.[index]) {\n return undefined;\n }\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const currentBuildObject = tsquery\n .query(returnStatements[index], 'ObjectLiteralExpression')?.[0]\n .getText();\n\n const currentBuildObjectStart = returnStatements[index].getStart();\n const currentBuildObjectEnd = returnStatements[index].getEnd();\n const newReturnObject = tsquery.replace(\n returnStatements[index].getText(),\n 'ObjectLiteralExpression',\n (_node: Node) => {\n return `{\n ...${currentBuildObject},\n ...${JSON.stringify(buildConfigObject)}\n }`;\n }\n );\n\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Delete,\n start: currentBuildObjectStart,\n length: currentBuildObjectEnd - currentBuildObjectStart,\n },\n {\n type: ChangeType.Insert,\n index: currentBuildObjectStart,\n text: newReturnObject,\n },\n ]);\n\n return newContents;\n}\n\nfunction transformConditionalConfig(\n conditionalConfig: Node[],\n appFileContent: string,\n buildConfigObject: {}\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const { SyntaxKind } = require('typescript');\n const functionBlock = tsquery.query(conditionalConfig[0], 'Block');\n const ifStatement = tsquery.query(functionBlock?.[0], 'IfStatement');\n\n const binaryExpressions = tsquery.query(ifStatement?.[0], 'BinaryExpression');\n\n const buildExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const buildExistsExpressionIndex = binaryExpressions?.findIndex(\n (binaryExpression) => binaryExpression.getText() === `command === 'build'`\n );\n\n const serveExists = binaryExpressions?.find(\n (binaryExpression) => binaryExpression.getText() === `command === 'serve'`\n );\n\n const elseKeywordExists = findNodes(ifStatement?.[0], SyntaxKind.ElseKeyword);\n const returnStatements: ReturnStatement[] = tsquery.query(\n ifStatement[0],\n 'ReturnStatement'\n );\n\n if (!buildExists) {\n if (serveExists && elseKeywordExists) {\n // build options live inside the else block\n return (\n transformCurrentBuildObject(\n returnStatements?.length - 1,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n } else {\n // no build options exist yet\n const functionBlockStart = functionBlock?.[0].getStart();\n const newContents = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: functionBlockStart + 1,\n text: `\n if (command === 'build') {\n return ${JSON.stringify(buildConfigObject)}\n }\n `,\n },\n ]);\n return newContents;\n }\n } else {\n // build already exists\n // it will be the return statement which lives\n // at the buildExistsExpressionIndex\n\n return (\n transformCurrentBuildObject(\n buildExistsExpressionIndex,\n returnStatements,\n appFileContent,\n buildConfigObject\n ) ?? appFileContent\n );\n }\n}\n\nfunction handlePluginNode(\n appFileContent: string,\n imports: string[],\n plugins: string[]\n): string | undefined {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const pluginsNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n let writeFile = false;\n\n if (pluginsNode.length) {\n appFileContent = tsquery.replace(\n file.getText(),\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])',\n (node: Node) => {\n const found = tsquery.query(\n node,\n 'ArrayLiteralExpression'\n ) as ArrayLiteralExpression[];\n let updatedPluginsString = '';\n\n const existingPluginNodes = found?.[0].elements ?? [];\n\n for (const plugin of existingPluginNodes) {\n updatedPluginsString += `${plugin.getText()}, `;\n }\n\n for (const plugin of plugins) {\n if (\n !existingPluginNodes?.some((node) =>\n node.getText().includes(plugin)\n )\n ) {\n updatedPluginsString += `${plugin}, `;\n }\n }\n\n return `plugins: [${updatedPluginsString}]`;\n }\n );\n writeFile = true;\n } else {\n // Plugins node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with plugins\n writeFile = false;\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: `plugins: [${plugins.join(', ')}],`,\n },\n ]);\n writeFile = true;\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: `plugins: [${plugins.join(', ')}],`,\n },\n ]);\n writeFile = true;\n }\n }\n } else {\n // Plugins option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: `plugins: [${plugins.join(', ')}],`,\n },\n ]);\n writeFile = true;\n } catch {\n writeFile = false;\n }\n }\n }\n if (writeFile) {\n const filteredImports = filterImport(appFileContent, imports);\n return filteredImports.join(';\\n') + '\\n' + appFileContent;\n }\n}\n\nfunction filterImport(appFileContent: string, imports: string[]): string[] {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const file = tsquery.ast(appFileContent);\n const importNodes = tsquery.query(\n file,\n ':matches(ImportDeclaration, VariableStatement)'\n );\n\n const importsArrayExisting = importNodes?.map((node) => {\n return node.getText().slice(0, -1);\n });\n\n return imports.filter((importString) => {\n return !importsArrayExisting?.includes(importString);\n });\n}\n\nfunction handleCacheDirNode(appFileContent: string, cacheDir: string): string {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n\n const file = tsquery.ast(appFileContent);\n const cacheDirNode = tsquery.query(\n file,\n 'PropertyAssignment:has(Identifier[name=\"cacheDir\"])'\n );\n\n if (!cacheDirNode?.length || cacheDirNode?.length === 0) {\n // cacheDir node does not exist yet\n // So make one from scratch\n\n const foundDefineConfig = tsquery.query(\n file,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n\n if (foundDefineConfig.length) {\n const conditionalConfig = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n\n if (conditionalConfig.length) {\n // We are NOT transforming the conditional config\n // with cacheDir\n } else {\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: cacheDir,\n },\n ]);\n } else {\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14,\n text: cacheDir,\n },\n ]);\n }\n }\n } else {\n // cacheDir option does not exist and defineConfig is not used\n // could also potentially be invalid syntax, so try-catch\n try {\n const defaultExport = tsquery.query(file, 'ExportAssignment');\n const found = tsquery?.query(\n defaultExport?.[0],\n 'ObjectLiteralExpression'\n );\n const startOfObject = found?.[0].getStart();\n appFileContent = applyChangesToString(appFileContent, [\n {\n type: ChangeType.Insert,\n index: startOfObject + 1,\n text: cacheDir,\n },\n ]);\n } catch {}\n }\n }\n\n return appFileContent;\n}\n"],"names":["ensureViteConfigIsCorrect","tree","path","buildConfigString","buildConfigObject","imports","plugins","testConfigString","testConfigObject","cacheDir","projectAlreadyHasViteTargets","fileContent","read","updatedContent","undefined","test","length","handleBuildOrTestNode","build","handlePluginNode","handleCacheDirNode","write","updatedFileContent","configContentString","configContentObject","name","tsquery","require","buildOrTestNode","query","replace","node","existingProperties","initializer","updatedPropsString","prop","propName","getText","propValue","Object","entries","JSON","stringify","foundDefineConfig","conditionalConfig","transformConditionalConfig","propertyAssignments","applyChangesToString","type","ChangeType","Insert","index","getStart","text","defaultExport","found","startOfObject","transformCurrentBuildObject","returnStatements","appFileContent","currentBuildObject","currentBuildObjectStart","currentBuildObjectEnd","getEnd","newReturnObject","_node","newContents","Delete","start","SyntaxKind","functionBlock","ifStatement","binaryExpressions","buildExists","find","binaryExpression","buildExistsExpressionIndex","findIndex","serveExists","elseKeywordExists","findNodes","ElseKeyword","functionBlockStart","file","ast","pluginsNode","writeFile","updatedPluginsString","existingPluginNodes","elements","plugin","some","includes","join","filteredImports","filterImport","importNodes","importsArrayExisting","map","slice","filter","importString","cacheDirNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|