@nx/vite 0.0.0-pr-3-e51e28c → 0.0.0-pr-30418-4e2b721

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n logger,\n offsetFromRoot,\n ProjectType,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n updateNxJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\nimport {\n getProjectType,\n isUsingTsSolutionSetup,\n} from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport { VitestGeneratorSchema } from './schema';\nimport { detectUiFramework } from '../../utils/detect-ui-framework';\nimport { getVitestDependenciesVersionsToInstall } from '../../utils/version-utils';\nimport { coerce, major } from 'semver';\n\n/**\n * @param hasPlugin some frameworks (e.g. Nuxt) provide their own plugin. Their generators handle the plugin detection.\n */\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n const tasks: GeneratorCallback[] = [];\n\n const { root, projectType: _projectType } = readProjectConfiguration(\n tree,\n schema.project\n );\n const projectType = schema.projectType ?? _projectType;\n const uiFramework =\n schema.uiFramework ?? (await detectUiFramework(schema.project));\n const isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n\n const pkgJson = readJson(tree, 'package.json');\n const useVite5 =\n major(coerce(pkgJson.devDependencies['vite']) ?? '6.0.0') === 5;\n const initTask = await initGenerator(tree, {\n projectRoot: root,\n skipFormat: true,\n addPlugin: schema.addPlugin,\n useViteV5: useVite5,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, { ...schema, uiFramework }));\n\n addOrChangeTestTarget(tree, schema, hasPlugin);\n\n if (!schema.skipViteConfig) {\n if (uiFramework === 'angular') {\n const relativeTestSetupPath = joinPathFragments('src', 'test-setup.ts');\n\n const setupFile = joinPathFragments(root, relativeTestSetupPath);\n if (!tree.exists(setupFile)) {\n tree.write(\n setupFile,\n `import '@analogjs/vitest-angular/setup-zone';\n\nimport {\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting,\n} from '@angular/platform-browser-dynamic/testing';\nimport { getTestBed } from '@angular/core/testing';\n\ngetTestBed().initTestEnvironment(\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting()\n);\n`\n );\n }\n\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: false,\n includeVitest: true,\n inSourceTests: false,\n imports: [`import angular from '@analogjs/vite-plugin-angular'`],\n plugins: ['angular()'],\n setupFile: relativeTestSetupPath,\n useEsmExtension: true,\n },\n true\n );\n } else if (uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: getProjectType(tree, root, projectType) === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: getProjectType(tree, root, projectType) === 'library',\n },\n true\n );\n }\n }\n\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n\n createFiles(tree, schema, root, isTsSolutionSetup);\n updateTsConfig(tree, schema, root, projectType);\n\n if (isTsSolutionSetup) {\n // in the TS solution setup, the test target depends on the build outputs\n // so we need to setup the task pipeline accordingly\n const nxJson = readNxJson(tree);\n const testTarget = schema.testTarget ?? 'test';\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults[testTarget] ??= {};\n nxJson.targetDefaults[testTarget].dependsOn ??= [];\n nxJson.targetDefaults[testTarget].dependsOn.push('^build');\n updateNxJson(tree, nxJson);\n }\n\n const coverageProviderDependency = await getCoverageProviderDependency(\n tree,\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n // Setup workspace config file (https://vitest.dev/guide/workspace.html)\n if (\n !isRootProject &&\n !tree.exists(`vitest.workspace.ts`) &&\n !tree.exists(`vitest.workspace.js`) &&\n !tree.exists(`vitest.workspace.json`) &&\n !tree.exists(`vitest.projects.ts`) &&\n !tree.exists(`vitest.projects.js`) &&\n !tree.exists(`vitest.projects.json`)\n ) {\n tree.write(\n 'vitest.workspace.ts',\n `export default ['**/vite.config.{mjs,js,ts,mts}', '**/vitest.config.{mjs,js,ts,mts}'];`\n );\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n projectType: ProjectType\n) {\n const setupFile = tryFindSetupFile(tree, projectRoot);\n\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n\n if (setupFile) {\n json.files = [...(json.files ?? []), setupFile];\n }\n\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n let runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n getProjectType(tree, projectRoot, projectType) === 'application'\n ? 'tsconfig.app.json'\n : 'tsconfig.lib.json'\n );\n if (options.runtimeTsconfigFileName) {\n runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n options.runtimeTsconfigFileName\n );\n if (!tree.exists(runtimeTsconfigPath)) {\n throw new Error(\n `Cannot find the specified runtimeTsConfigFileName (\"${options.runtimeTsconfigFileName}\") at the project root \"${projectRoot}\".`\n );\n }\n }\n\n if (tree.exists(runtimeTsconfigPath)) {\n updateJson(tree, runtimeTsconfigPath, (json) => {\n if (options.inSourceTests) {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n } else {\n const uniqueExclude = new Set([\n ...(json.exclude || []),\n 'vite.config.ts',\n 'vite.config.mts',\n 'vitest.config.ts',\n 'vitest.config.mts',\n 'src/**/*.test.ts',\n 'src/**/*.spec.ts',\n 'src/**/*.test.tsx',\n 'src/**/*.spec.tsx',\n 'src/**/*.test.js',\n 'src/**/*.spec.js',\n 'src/**/*.test.jsx',\n 'src/**/*.spec.jsx',\n ]);\n json.exclude = [...uniqueExclude];\n }\n\n if (setupFile) {\n json.exclude = [...(json.exclude ?? []), setupFile];\n }\n\n return json;\n });\n } else {\n logger.warn(\n `Couldn't find a runtime tsconfig file at ${runtimeTsconfigPath} to exclude the test files from. ` +\n `If you're using a different filename for your runtime tsconfig, please provide it with the '--runtimeTsconfigFileName' flag.`\n );\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n isTsSolutionSetup: boolean\n) {\n const rootOffset = offsetFromRoot(projectRoot);\n\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n extendedConfig: isTsSolutionSetup\n ? `${rootOffset}tsconfig.base.json`\n : './tsconfig.json',\n outDir: isTsSolutionSetup\n ? `./out-tsc/vitest`\n : `${rootOffset}dist/out-tsc`,\n });\n}\n\nasync function getCoverageProviderDependency(\n tree: Tree,\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n const { vitestCoverageV8, vitestCoverageIstanbul } =\n await getVitestDependenciesVersionsToInstall(tree);\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbul,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8,\n };\n }\n}\n\nfunction tryFindSetupFile(tree: Tree, projectRoot: string) {\n const setupFile = joinPathFragments('src', 'test-setup.ts');\n if (tree.exists(joinPathFragments(projectRoot, setupFile))) {\n return setupFile;\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","testEnvironment","tasks","root","projectType","_projectType","readProjectConfiguration","project","uiFramework","detectUiFramework","isRootProject","push","jsInitGenerator","skipFormat","pkgJson","readJson","coerce","useVite5","major","devDependencies","initTask","initGenerator","projectRoot","useViteV5","ensureDependencies","addOrChangeTestTarget","skipViteConfig","relativeTestSetupPath","joinPathFragments","setupFile","exists","write","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","imports","plugins","useEsmExtension","getProjectType","rollupOptionsExternal","compiler","coverageProvider","isTsSolutionSetup","isUsingTsSolutionSetup","createFiles","updateTsConfig","nxJson","testTarget","readNxJson","targetDefaults","dependsOn","updateNxJson","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","formatFiles","runTasksInSerial","options","tryFindSetupFile","updateJson","json","compilerOptions","types","includes","files","references","some","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","rootOffset","offsetFromRoot","generateFiles","join","__dirname","tmpl","extendedConfig","outDir","vitestCoverageV8","vitestCoverageIstanbul","getVitestDependenciesVersionsToInstall"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/vitest/vitest-generator.ts"],"sourcesContent":["import {\n addDependenciesToPackageJson,\n formatFiles,\n generateFiles,\n GeneratorCallback,\n joinPathFragments,\n logger,\n offsetFromRoot,\n ProjectType,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n updateNxJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\nimport {\n getProjectType,\n isUsingTsSolutionSetup,\n} from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { typesNodeVersion } from '@nx/js/src/utils/versions';\nimport { join } from 'path';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addOrChangeTestTarget,\n createOrEditViteConfig,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport { VitestGeneratorSchema } from './schema';\nimport { detectUiFramework } from '../../utils/detect-ui-framework';\nimport { getVitestDependenciesVersionsToInstall } from '../../utils/version-utils';\nimport { coerce, major } from 'semver';\n\n/**\n * @param hasPlugin some frameworks (e.g. Nuxt) provide their own plugin. Their generators handle the plugin detection.\n */\nexport function vitestGenerator(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n return vitestGeneratorInternal(\n tree,\n { addPlugin: false, ...schema },\n hasPlugin\n );\n}\n\nexport async function vitestGeneratorInternal(\n tree: Tree,\n schema: VitestGeneratorSchema,\n hasPlugin = false\n) {\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n const tasks: GeneratorCallback[] = [];\n\n const { root, projectType: _projectType } = readProjectConfiguration(\n tree,\n schema.project\n );\n const projectType = schema.projectType ?? _projectType;\n const uiFramework =\n schema.uiFramework ?? (await detectUiFramework(schema.project));\n const isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n\n const pkgJson = readJson(tree, 'package.json');\n const useVite5 =\n major(coerce(pkgJson.devDependencies['vite']) ?? '6.0.0') === 5;\n const initTask = await initGenerator(tree, {\n projectRoot: root,\n skipFormat: true,\n addPlugin: schema.addPlugin,\n useViteV5: useVite5,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, { ...schema, uiFramework }));\n\n addOrChangeTestTarget(tree, schema, hasPlugin);\n\n if (!schema.skipViteConfig) {\n if (uiFramework === 'angular') {\n const relativeTestSetupPath = joinPathFragments('src', 'test-setup.ts');\n\n const setupFile = joinPathFragments(root, relativeTestSetupPath);\n if (!tree.exists(setupFile)) {\n tree.write(\n setupFile,\n `import '@analogjs/vitest-angular/setup-zone';\n\nimport {\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting,\n} from '@angular/platform-browser-dynamic/testing';\nimport { getTestBed } from '@angular/core/testing';\n\ngetTestBed().initTestEnvironment(\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting()\n);\n`\n );\n }\n\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: false,\n includeVitest: true,\n inSourceTests: false,\n imports: [`import angular from '@analogjs/vite-plugin-angular'`],\n plugins: ['angular()'],\n setupFile: relativeTestSetupPath,\n useEsmExtension: true,\n },\n true\n );\n } else if (uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: getProjectType(tree, root, projectType) === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n coverageProvider: schema.coverageProvider,\n },\n true\n );\n } else {\n createOrEditViteConfig(\n tree,\n {\n ...schema,\n includeVitest: true,\n includeLib: getProjectType(tree, root, projectType) === 'library',\n },\n true\n );\n }\n }\n\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\n\n createFiles(tree, schema, root, isTsSolutionSetup);\n updateTsConfig(tree, schema, root, projectType);\n\n if (isTsSolutionSetup) {\n // in the TS solution setup, the test target depends on the build outputs\n // so we need to setup the task pipeline accordingly\n const nxJson = readNxJson(tree);\n const testTarget = schema.testTarget ?? 'test';\n nxJson.targetDefaults ??= {};\n nxJson.targetDefaults[testTarget] ??= {};\n nxJson.targetDefaults[testTarget].dependsOn ??= [];\n nxJson.targetDefaults[testTarget].dependsOn.push('^build');\n updateNxJson(tree, nxJson);\n }\n\n const devDependencies = await getCoverageProviderDependency(\n tree,\n schema.coverageProvider\n );\n devDependencies['@types/node'] = typesNodeVersion;\n\n const installDependenciesTask = addDependenciesToPackageJson(\n tree,\n {},\n devDependencies\n );\n tasks.push(installDependenciesTask);\n\n // Setup workspace config file (https://vitest.dev/guide/workspace.html)\n if (\n !isRootProject &&\n !tree.exists(`vitest.workspace.ts`) &&\n !tree.exists(`vitest.workspace.js`) &&\n !tree.exists(`vitest.workspace.json`) &&\n !tree.exists(`vitest.projects.ts`) &&\n !tree.exists(`vitest.projects.js`) &&\n !tree.exists(`vitest.projects.json`)\n ) {\n tree.write(\n 'vitest.workspace.ts',\n `export default ['**/vite.config.{mjs,js,ts,mts}', '**/vitest.config.{mjs,js,ts,mts}'];`\n );\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nfunction updateTsConfig(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n projectType: ProjectType\n) {\n const setupFile = tryFindSetupFile(tree, projectRoot);\n\n if (tree.exists(joinPathFragments(projectRoot, 'tsconfig.spec.json'))) {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.spec.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n\n if (setupFile) {\n json.files = [...(json.files ?? []), setupFile];\n }\n\n return json;\n }\n );\n\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (\n json.references &&\n !json.references.some((r) => r.path === './tsconfig.spec.json')\n ) {\n json.references.push({\n path: './tsconfig.spec.json',\n });\n }\n return json;\n }\n );\n } else {\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.json'),\n (json) => {\n if (!json.compilerOptions?.types?.includes('vitest')) {\n if (json.compilerOptions?.types) {\n json.compilerOptions.types.push('vitest');\n } else {\n json.compilerOptions ??= {};\n json.compilerOptions.types = ['vitest'];\n }\n }\n return json;\n }\n );\n }\n\n let runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n getProjectType(tree, projectRoot, projectType) === 'application'\n ? 'tsconfig.app.json'\n : 'tsconfig.lib.json'\n );\n if (options.runtimeTsconfigFileName) {\n runtimeTsconfigPath = joinPathFragments(\n projectRoot,\n options.runtimeTsconfigFileName\n );\n if (!tree.exists(runtimeTsconfigPath)) {\n throw new Error(\n `Cannot find the specified runtimeTsConfigFileName (\"${options.runtimeTsconfigFileName}\") at the project root \"${projectRoot}\".`\n );\n }\n }\n\n if (tree.exists(runtimeTsconfigPath)) {\n updateJson(tree, runtimeTsconfigPath, (json) => {\n if (options.inSourceTests) {\n (json.compilerOptions.types ??= []).push('vitest/importMeta');\n } else {\n const uniqueExclude = new Set([\n ...(json.exclude || []),\n 'vite.config.ts',\n 'vite.config.mts',\n 'vitest.config.ts',\n 'vitest.config.mts',\n 'src/**/*.test.ts',\n 'src/**/*.spec.ts',\n 'src/**/*.test.tsx',\n 'src/**/*.spec.tsx',\n 'src/**/*.test.js',\n 'src/**/*.spec.js',\n 'src/**/*.test.jsx',\n 'src/**/*.spec.jsx',\n ]);\n json.exclude = [...uniqueExclude];\n }\n\n if (setupFile) {\n json.exclude = [...(json.exclude ?? []), setupFile];\n }\n\n return json;\n });\n } else {\n logger.warn(\n `Couldn't find a runtime tsconfig file at ${runtimeTsconfigPath} to exclude the test files from. ` +\n `If you're using a different filename for your runtime tsconfig, please provide it with the '--runtimeTsconfigFileName' flag.`\n );\n }\n}\n\nfunction createFiles(\n tree: Tree,\n options: VitestGeneratorSchema,\n projectRoot: string,\n isTsSolutionSetup: boolean\n) {\n const rootOffset = offsetFromRoot(projectRoot);\n\n generateFiles(tree, join(__dirname, 'files'), projectRoot, {\n tmpl: '',\n ...options,\n projectRoot,\n extendedConfig: isTsSolutionSetup\n ? `${rootOffset}tsconfig.base.json`\n : './tsconfig.json',\n outDir: isTsSolutionSetup\n ? `./out-tsc/vitest`\n : `${rootOffset}dist/out-tsc`,\n });\n}\n\nasync function getCoverageProviderDependency(\n tree: Tree,\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n): Promise<Record<string, string>> {\n const { vitestCoverageV8, vitestCoverageIstanbul } =\n await getVitestDependenciesVersionsToInstall(tree);\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbul,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8,\n };\n }\n}\n\nfunction tryFindSetupFile(tree: Tree, projectRoot: string) {\n const setupFile = joinPathFragments('src', 'test-setup.ts');\n if (tree.exists(joinPathFragments(projectRoot, setupFile))) {\n return setupFile;\n }\n}\n\nexport default vitestGenerator;\n"],"names":["vitestGenerator","vitestGeneratorInternal","tree","schema","hasPlugin","addPlugin","testEnvironment","tasks","root","projectType","_projectType","readProjectConfiguration","project","uiFramework","detectUiFramework","isRootProject","push","jsInitGenerator","skipFormat","pkgJson","readJson","coerce","useVite5","major","devDependencies","initTask","initGenerator","projectRoot","useViteV5","ensureDependencies","addOrChangeTestTarget","skipViteConfig","relativeTestSetupPath","joinPathFragments","setupFile","exists","write","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","imports","plugins","useEsmExtension","getProjectType","rollupOptionsExternal","compiler","coverageProvider","isTsSolutionSetup","isUsingTsSolutionSetup","createFiles","updateTsConfig","nxJson","testTarget","readNxJson","targetDefaults","dependsOn","updateNxJson","getCoverageProviderDependency","typesNodeVersion","installDependenciesTask","addDependenciesToPackageJson","formatFiles","runTasksInSerial","options","tryFindSetupFile","updateJson","json","compilerOptions","types","includes","files","references","some","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","rootOffset","offsetFromRoot","generateFiles","join","__dirname","tmpl","extendedConfig","outDir","vitestCoverageV8","vitestCoverageIstanbul","getVitestDependenciesVersionsToInstall"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -73,13 +73,17 @@ const createNodesV2 = [
73
73
  const siblingFiles = (0, _fs.readdirSync)((0, _path.join)(context.workspaceRoot, projectRoot));
74
74
  var _siblingFiles_filter;
75
75
  const tsConfigFiles = (_siblingFiles_filter = siblingFiles.filter((p)=>(0, _minimatch.minimatch)(p, 'tsconfig*{.json,.*.json}'))) != null ? _siblingFiles_filter : [];
76
+ const hasReactRouterConfig = siblingFiles.some((configFile)=>{
77
+ const parts = configFile.split('.');
78
+ return parts[0] === 'react-router' && parts[1] === 'config' && parts.length > 2;
79
+ });
76
80
  // results from vitest.config.js will be different from results of vite.config.js
77
81
  // but the hash will be the same because it is based on the files under the project root.
78
82
  // Adding the config file path to the hash ensures that the final hash value is different
79
83
  // for different config files.
80
84
  const hash = hashes[idx] + configFile;
81
85
  var _1;
82
- const { projectType, metadata, targets } = (_1 = (_targetsCache = targetsCache)[_hash = hash]) != null ? _1 : _targetsCache[_hash] = await buildViteTargets(configFile, projectRoot, normalizedOptions, tsConfigFiles, isUsingTsSolutionSetup, context);
86
+ const { projectType, metadata, targets } = (_1 = (_targetsCache = targetsCache)[_hash = hash]) != null ? _1 : _targetsCache[_hash] = await buildViteTargets(configFile, projectRoot, normalizedOptions, tsConfigFiles, hasReactRouterConfig, isUsingTsSolutionSetup, context);
83
87
  const project = {
84
88
  root: projectRoot,
85
89
  targets,
@@ -113,9 +117,13 @@ const createNodes = [
113
117
  }
114
118
  var _siblingFiles_filter;
115
119
  const tsConfigFiles = (_siblingFiles_filter = siblingFiles.filter((p)=>(0, _minimatch.minimatch)(p, 'tsconfig*{.json,.*.json}'))) != null ? _siblingFiles_filter : [];
120
+ const hasReactRouterConfig = siblingFiles.some((configFile)=>{
121
+ const parts = configFile.split('.');
122
+ return parts[0] === 'react-router' && parts[1] === 'config' && parts.length > 2;
123
+ });
116
124
  const normalizedOptions = normalizeOptions(options);
117
125
  const isUsingTsSolutionSetup = (0, _tssolutionsetup.isUsingTsSolutionSetup)();
118
- const { projectType, metadata, targets } = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, tsConfigFiles, isUsingTsSolutionSetup, context);
126
+ const { projectType, metadata, targets } = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, tsConfigFiles, hasReactRouterConfig, isUsingTsSolutionSetup, context);
119
127
  const project = {
120
128
  root: projectRoot,
121
129
  targets,
@@ -133,7 +141,7 @@ const createNodes = [
133
141
  };
134
142
  }
135
143
  ];
136
- async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFiles, isUsingTsSolutionSetup, context) {
144
+ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFiles, hasReactRouterConfig, isUsingTsSolutionSetup, context) {
137
145
  var _viteBuildConfig_build;
138
146
  const absoluteConfigFilePath = (0, _devkit.joinPathFragments)(context.workspaceRoot, configFilePath);
139
147
  // Workaround for the `build$3 is not a function` error that we sometimes see in agents.
@@ -152,6 +160,18 @@ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFi
152
160
  const { buildOutputs, testOutputs, hasTest, isBuildable, hasServeConfig } = getOutputs(viteBuildConfig, projectRoot, context.workspaceRoot);
153
161
  const namedInputs = (0, _getnamedinputs.getNamedInputs)(projectRoot, context);
154
162
  const targets = {};
163
+ // if file is vitest.config or vite.config has definition for test, create target for test
164
+ if (configFilePath.includes('vitest.config') || hasTest) {
165
+ targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
166
+ }
167
+ if (hasReactRouterConfig) {
168
+ // If we have a react-router config, we can skip the rest of the targets
169
+ return {
170
+ targets,
171
+ metadata: {},
172
+ projectType: 'application'
173
+ };
174
+ }
155
175
  // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static
156
176
  const hasRemixPlugin = viteBuildConfig.plugins && viteBuildConfig.plugins.some((p)=>p.name === 'remix');
157
177
  if (!configFilePath.includes('vitest.config') && !hasRemixPlugin && isBuildable) {
@@ -225,10 +245,6 @@ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFi
225
245
  ];
226
246
  }
227
247
  }
228
- // if file is vitest.config or vite.config has definition for test, create target for test
229
- if (configFilePath.includes('vitest.config') || hasTest) {
230
- targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
231
- }
232
248
  (0, _util.addBuildAndWatchDepsTargets)(context.workspaceRoot, projectRoot, targets, options, pmc);
233
249
  const metadata = {};
234
250
  return {
@@ -287,7 +303,6 @@ async function buildTarget(buildTargetName, namedInputs, outputs, projectRoot, i
287
303
  }
288
304
  function serveTarget(projectRoot, isUsingTsSolutionSetup) {
289
305
  const targetConfig = {
290
- continuous: true,
291
306
  command: `vite`,
292
307
  options: {
293
308
  cwd: (0, _devkit.joinPathFragments)(projectRoot)
@@ -316,7 +331,6 @@ function serveTarget(projectRoot, isUsingTsSolutionSetup) {
316
331
  }
317
332
  function previewTarget(projectRoot, buildTargetName) {
318
333
  const targetConfig = {
319
- continuous: true,
320
334
  command: `vite preview`,
321
335
  dependsOn: [
322
336
  buildTargetName
@@ -385,7 +399,6 @@ async function testTarget(namedInputs, outputs, projectRoot) {
385
399
  }
386
400
  function serveStaticTarget(options, isUsingTsSolutionSetup) {
387
401
  const targetConfig = {
388
- continuous: true,
389
402
  executor: '@nx/web:file-server',
390
403
  options: {
391
404
  buildTarget: `${options.buildTargetName}`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n CreateNodesContextV2,\n createNodesFromFiles,\n CreateNodesV2,\n detectPackageManager,\n getPackageManagerCommand,\n joinPathFragments,\n logger,\n ProjectConfiguration,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport {\n calculateHashesForCreateNodes,\n calculateHashForCreateNodes,\n} from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\nimport { hashObject } from 'nx/src/hasher/file-hasher';\nimport { minimatch } from 'minimatch';\nimport { isUsingTsSolutionSetup as _isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { addBuildAndWatchDepsTargets } from '@nx/js/src/plugins/typescript/util';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n /**\n * @deprecated Use devTargetName instead. This option will be removed in Nx 22.\n */\n serveTargetName?: string;\n devTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n watchDepsTargetName?: string;\n buildDepsTargetName?: string;\n}\n\ntype ViteTargets = Pick<\n ProjectConfiguration,\n 'targets' | 'metadata' | 'projectType'\n>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return process.env.NX_CACHE_PROJECT_GRAPH !== 'false' && existsSync(cachePath)\n ? readJsonFile(cachePath)\n : {};\n}\n\nfunction writeTargetsToCache(cachePath, results?: Record<string, ViteTargets>) {\n writeJsonFile(cachePath, results);\n}\n\n/**\n * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.\n */\nexport const createDependencies: CreateDependencies = () => {\n return [];\n};\n\nconst viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';\n\nexport const createNodesV2: CreateNodesV2<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePaths, options, context) => {\n const optionsHash = hashObject(options);\n const normalizedOptions = normalizeOptions(options);\n const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { roots: projectRoots, configFiles: validConfigFiles } =\n configFilePaths.reduce(\n (acc, configFile) => {\n const potentialRoot = dirname(configFile);\n if (checkIfConfigFileShouldBeProject(potentialRoot, context)) {\n acc.roots.push(potentialRoot);\n acc.configFiles.push(configFile);\n }\n return acc;\n },\n {\n roots: [],\n configFiles: [],\n } as {\n roots: string[];\n configFiles: string[];\n }\n );\n\n const lockfile = getLockFileName(\n detectPackageManager(context.workspaceRoot)\n );\n const hashes = await calculateHashesForCreateNodes(\n projectRoots,\n { ...normalizedOptions, isUsingTsSolutionSetup },\n context,\n projectRoots.map((r) => [lockfile])\n );\n\n try {\n return await createNodesFromFiles(\n async (configFile, _, context, idx) => {\n const projectRoot = dirname(configFile);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(\n join(context.workspaceRoot, projectRoot)\n );\n\n const tsConfigFiles =\n siblingFiles.filter((p) =>\n minimatch(p, 'tsconfig*{.json,.*.json}')\n ) ?? [];\n\n // results from vitest.config.js will be different from results of vite.config.js\n // but the hash will be the same because it is based on the files under the project root.\n // Adding the config file path to the hash ensures that the final hash value is different\n // for different config files.\n const hash = hashes[idx] + configFile;\n const { projectType, metadata, targets } = (targetsCache[hash] ??=\n await buildViteTargets(\n configFile,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n isUsingTsSolutionSetup,\n context\n ));\n\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n validConfigFiles,\n options,\n context\n );\n } finally {\n writeTargetsToCache(cachePath, targetsCache);\n }\n },\n];\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePath, options, context) => {\n logger.warn(\n '`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.'\n );\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n const tsConfigFiles =\n siblingFiles.filter((p) => minimatch(p, 'tsconfig*{.json,.*.json}')) ??\n [];\n\n const normalizedOptions = normalizeOptions(options);\n\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { projectType, metadata, targets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n isUsingTsSolutionSetup,\n context\n );\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n tsConfigFiles: string[],\n isUsingTsSolutionSetup: boolean,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteBuildConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable, hasServeConfig } =\n getOutputs(viteBuildConfig, projectRoot, context.workspaceRoot);\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteBuildConfig.plugins &&\n viteBuildConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot,\n isUsingTsSolutionSetup\n );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n const devTarget = serveTarget(projectRoot, isUsingTsSolutionSetup);\n\n targets[options.serveTargetName] = {\n ...devTarget,\n metadata: {\n ...devTarget.metadata,\n deprecated:\n 'Use devTargetName instead. This option will be removed in Nx 22.',\n },\n };\n targets[options.devTargetName] = devTarget;\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(\n options,\n isUsingTsSolutionSetup\n );\n }\n }\n\n if (tsConfigFiles.length) {\n const tsConfigToUse =\n ['tsconfig.app.json', 'tsconfig.lib.json', 'tsconfig.json'].find((t) =>\n tsConfigFiles.includes(t)\n ) ?? tsConfigFiles[0];\n targets[options.typecheckTargetName] = {\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n { externalDependencies: ['typescript'] },\n ],\n command: isUsingTsSolutionSetup\n ? `tsc --build --emitDeclarationOnly`\n : `tsc --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Runs type-checking for the project.`,\n technologies: ['typescript'],\n help: {\n command: isUsingTsSolutionSetup\n ? `${pmc.exec} tsc --build --help`\n : `${pmc.exec} tsc -p ${tsConfigToUse} --help`,\n example: isUsingTsSolutionSetup\n ? { args: ['--force'] }\n : { options: { noEmit: true } },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targets[options.typecheckTargetName].dependsOn = [\n `^${options.typecheckTargetName}`,\n ];\n targets[options.typecheckTargetName].syncGenerators = [\n '@nx/js:typescript-sync',\n ];\n }\n }\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n addBuildAndWatchDepsTargets(\n context.workspaceRoot,\n projectRoot,\n targets,\n options,\n pmc\n );\n\n const metadata = {};\n return {\n targets,\n metadata,\n projectType: viteBuildConfig.build?.lib ? 'library' : 'application',\n };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string,\n isUsingTsSolutionSetup: boolean\n) {\n const buildTarget: TargetConfiguration = {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite build`,\n help: {\n command: `${pmc.exec} vite build --help`,\n example: {\n options: {\n sourcemap: true,\n manifest: 'manifest.json',\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n buildTarget.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return buildTarget;\n}\n\nfunction serveTarget(projectRoot: string, isUsingTsSolutionSetup: boolean) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Starts Vite dev server`,\n help: {\n command: `${pmc.exec} vite --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string, buildTargetName) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n command: `vite preview`,\n dependsOn: [buildTargetName],\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Locally preview Vite production build`,\n help: {\n command: `${pmc.exec} vite preview --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite tests`,\n help: {\n command: `${pmc.exec} vitest --help`,\n example: {\n options: {\n bail: 1,\n coverage: true,\n },\n },\n },\n },\n };\n}\n\nfunction serveStaticTarget(\n options: VitePluginOptions,\n isUsingTsSolutionSetup: boolean\n) {\n const targetConfig: TargetConfiguration = {\n continuous: true,\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteBuildConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n hasServeConfig: boolean;\n} {\n const { build, test, server } = viteBuildConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.input ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const hasServeConfig = Boolean(server);\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n hasServeConfig,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.devTargetName ??= 'dev';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n\nfunction checkIfConfigFileShouldBeProject(\n projectRoot: string,\n context: CreateNodesContext | CreateNodesContextV2\n): boolean {\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return false;\n }\n\n return true;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","pmc","getPackageManagerCommand","readTargetsCache","cachePath","process","env","NX_CACHE_PROJECT_GRAPH","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","normalizedOptions","normalizeOptions","join","workspaceDataDirectory","targetsCache","isUsingTsSolutionSetup","_isUsingTsSolutionSetup","roots","projectRoots","configFiles","validConfigFiles","reduce","acc","configFile","potentialRoot","dirname","checkIfConfigFileShouldBeProject","push","lockfile","getLockFileName","detectPackageManager","workspaceRoot","hashes","calculateHashesForCreateNodes","map","r","createNodesFromFiles","_","idx","hash","projectRoot","siblingFiles","readdirSync","tsConfigFiles","filter","p","minimatch","projectType","metadata","targets","buildViteTargets","project","root","buildTargetName","projects","configFilePath","logger","warn","includes","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","name","buildTarget","build","lib","devTarget","serveTarget","serveTargetName","deprecated","devTargetName","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","length","tsConfigToUse","find","t","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","technologies","help","exec","example","args","noEmit","dependsOn","syncGenerators","testTargetName","testTarget","addBuildAndWatchDepsTargets","outputs","sourcemap","manifest","targetConfig","continuous","port","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","Boolean","reportsDirectoryPath","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n CreateNodesContextV2,\n createNodesFromFiles,\n CreateNodesV2,\n detectPackageManager,\n getPackageManagerCommand,\n joinPathFragments,\n logger,\n ProjectConfiguration,\n readJsonFile,\n TargetConfiguration,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { existsSync, readdirSync } from 'fs';\nimport {\n calculateHashesForCreateNodes,\n calculateHashForCreateNodes,\n} from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { workspaceDataDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nimport { loadViteDynamicImport } from '../utils/executor-utils';\nimport { hashObject } from 'nx/src/hasher/file-hasher';\nimport { minimatch } from 'minimatch';\nimport { isUsingTsSolutionSetup as _isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { addBuildAndWatchDepsTargets } from '@nx/js/src/plugins/typescript/util';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n /**\n * @deprecated Use devTargetName instead. This option will be removed in Nx 22.\n */\n serveTargetName?: string;\n devTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n watchDepsTargetName?: string;\n buildDepsTargetName?: string;\n}\n\ntype ViteTargets = Pick<\n ProjectConfiguration,\n 'targets' | 'metadata' | 'projectType'\n>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return process.env.NX_CACHE_PROJECT_GRAPH !== 'false' && existsSync(cachePath)\n ? readJsonFile(cachePath)\n : {};\n}\n\nfunction writeTargetsToCache(cachePath, results?: Record<string, ViteTargets>) {\n writeJsonFile(cachePath, results);\n}\n\n/**\n * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.\n */\nexport const createDependencies: CreateDependencies = () => {\n return [];\n};\n\nconst viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';\n\nexport const createNodesV2: CreateNodesV2<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePaths, options, context) => {\n const optionsHash = hashObject(options);\n const normalizedOptions = normalizeOptions(options);\n const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { roots: projectRoots, configFiles: validConfigFiles } =\n configFilePaths.reduce(\n (acc, configFile) => {\n const potentialRoot = dirname(configFile);\n if (checkIfConfigFileShouldBeProject(potentialRoot, context)) {\n acc.roots.push(potentialRoot);\n acc.configFiles.push(configFile);\n }\n return acc;\n },\n {\n roots: [],\n configFiles: [],\n } as {\n roots: string[];\n configFiles: string[];\n }\n );\n\n const lockfile = getLockFileName(\n detectPackageManager(context.workspaceRoot)\n );\n const hashes = await calculateHashesForCreateNodes(\n projectRoots,\n { ...normalizedOptions, isUsingTsSolutionSetup },\n context,\n projectRoots.map((r) => [lockfile])\n );\n\n try {\n return await createNodesFromFiles(\n async (configFile, _, context, idx) => {\n const projectRoot = dirname(configFile);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(\n join(context.workspaceRoot, projectRoot)\n );\n\n const tsConfigFiles =\n siblingFiles.filter((p) =>\n minimatch(p, 'tsconfig*{.json,.*.json}')\n ) ?? [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' &&\n parts[1] === 'config' &&\n parts.length > 2\n );\n });\n\n // results from vitest.config.js will be different from results of vite.config.js\n // but the hash will be the same because it is based on the files under the project root.\n // Adding the config file path to the hash ensures that the final hash value is different\n // for different config files.\n const hash = hashes[idx] + configFile;\n const { projectType, metadata, targets } = (targetsCache[hash] ??=\n await buildViteTargets(\n configFile,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n ));\n\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n validConfigFiles,\n options,\n context\n );\n } finally {\n writeTargetsToCache(cachePath, targetsCache);\n }\n },\n];\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n viteVitestConfigGlob,\n async (configFilePath, options, context) => {\n logger.warn(\n '`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.'\n );\n const projectRoot = dirname(configFilePath);\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return {};\n }\n\n const tsConfigFiles =\n siblingFiles.filter((p) => minimatch(p, 'tsconfig*{.json,.*.json}')) ??\n [];\n\n const hasReactRouterConfig = siblingFiles.some((configFile) => {\n const parts = configFile.split('.');\n return (\n parts[0] === 'react-router' && parts[1] === 'config' && parts.length > 2\n );\n });\n\n const normalizedOptions = normalizeOptions(options);\n\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n\n const { projectType, metadata, targets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n hasReactRouterConfig,\n isUsingTsSolutionSetup,\n context\n );\n const project: ProjectConfiguration = {\n root: projectRoot,\n targets,\n metadata,\n };\n\n // If project is buildable, then the project type.\n // If it is not buildable, then leave it to other plugins/project.json to set the project type.\n if (project.targets[normalizedOptions.buildTargetName]) {\n project.projectType = projectType;\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n tsConfigFiles: string[],\n hasReactRouterConfig: boolean,\n isUsingTsSolutionSetup: boolean,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const viteBuildConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable, hasServeConfig } =\n getOutputs(viteBuildConfig, projectRoot, context.workspaceRoot);\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n // if file is vitest.config or vite.config has definition for test, create target for test\n if (configFilePath.includes('vitest.config') || hasTest) {\n targets[options.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n }\n\n if (hasReactRouterConfig) {\n // If we have a react-router config, we can skip the rest of the targets\n return { targets, metadata: {}, projectType: 'application' };\n }\n // If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static\n const hasRemixPlugin =\n viteBuildConfig.plugins &&\n viteBuildConfig.plugins.some((p) => p.name === 'remix');\n if (\n !configFilePath.includes('vitest.config') &&\n !hasRemixPlugin &&\n isBuildable\n ) {\n targets[options.buildTargetName] = await buildTarget(\n options.buildTargetName,\n namedInputs,\n buildOutputs,\n projectRoot,\n isUsingTsSolutionSetup\n );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n const devTarget = serveTarget(projectRoot, isUsingTsSolutionSetup);\n\n targets[options.serveTargetName] = {\n ...devTarget,\n metadata: {\n ...devTarget.metadata,\n deprecated:\n 'Use devTargetName instead. This option will be removed in Nx 22.',\n },\n };\n targets[options.devTargetName] = devTarget;\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(\n options,\n isUsingTsSolutionSetup\n );\n }\n }\n\n if (tsConfigFiles.length) {\n const tsConfigToUse =\n ['tsconfig.app.json', 'tsconfig.lib.json', 'tsconfig.json'].find((t) =>\n tsConfigFiles.includes(t)\n ) ?? tsConfigFiles[0];\n targets[options.typecheckTargetName] = {\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n { externalDependencies: ['typescript'] },\n ],\n command: isUsingTsSolutionSetup\n ? `tsc --build --emitDeclarationOnly`\n : `tsc --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Runs type-checking for the project.`,\n technologies: ['typescript'],\n help: {\n command: isUsingTsSolutionSetup\n ? `${pmc.exec} tsc --build --help`\n : `${pmc.exec} tsc -p ${tsConfigToUse} --help`,\n example: isUsingTsSolutionSetup\n ? { args: ['--force'] }\n : { options: { noEmit: true } },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targets[options.typecheckTargetName].dependsOn = [\n `^${options.typecheckTargetName}`,\n ];\n targets[options.typecheckTargetName].syncGenerators = [\n '@nx/js:typescript-sync',\n ];\n }\n }\n\n addBuildAndWatchDepsTargets(\n context.workspaceRoot,\n projectRoot,\n targets,\n options,\n pmc\n );\n\n const metadata = {};\n return {\n targets,\n metadata,\n projectType: viteBuildConfig.build?.lib ? 'library' : 'application',\n };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string,\n isUsingTsSolutionSetup: boolean\n) {\n const buildTarget: TargetConfiguration = {\n command: `vite build`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n dependsOn: [`^${buildTargetName}`],\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite build`,\n help: {\n command: `${pmc.exec} vite build --help`,\n example: {\n options: {\n sourcemap: true,\n manifest: 'manifest.json',\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n buildTarget.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return buildTarget;\n}\n\nfunction serveTarget(projectRoot: string, isUsingTsSolutionSetup: boolean) {\n const targetConfig: TargetConfiguration = {\n command: `vite`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Starts Vite dev server`,\n help: {\n command: `${pmc.exec} vite --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string, buildTargetName) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n dependsOn: [buildTargetName],\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n metadata: {\n technologies: ['vite'],\n description: `Locally preview Vite production build`,\n help: {\n command: `${pmc.exec} vite preview --help`,\n example: {\n options: {\n port: 3000,\n },\n },\n },\n },\n };\n\n return targetConfig;\n}\n\nasync function testTarget(\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\n command: `vitest`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['default', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n { env: 'CI' },\n ],\n outputs,\n metadata: {\n technologies: ['vite'],\n description: `Run Vite tests`,\n help: {\n command: `${pmc.exec} vitest --help`,\n example: {\n options: {\n bail: 1,\n coverage: true,\n },\n },\n },\n },\n };\n}\n\nfunction serveStaticTarget(\n options: VitePluginOptions,\n isUsingTsSolutionSetup: boolean\n) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\n };\n\n if (isUsingTsSolutionSetup) {\n targetConfig.syncGenerators = ['@nx/js:typescript-sync'];\n }\n\n return targetConfig;\n}\n\nfunction getOutputs(\n viteBuildConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n hasServeConfig: boolean;\n} {\n const { build, test, server } = viteBuildConfig;\n\n const buildOutputPath = normalizeOutputPath(\n build?.outDir,\n projectRoot,\n workspaceRoot,\n 'dist'\n );\n\n const isBuildable =\n build?.lib ||\n build?.rollupOptions?.input ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\n\n const hasServeConfig = Boolean(server);\n\n const reportsDirectoryPath = normalizeOutputPath(\n test?.coverage?.reportsDirectory,\n projectRoot,\n workspaceRoot,\n 'coverage'\n );\n\n return {\n buildOutputs: [buildOutputPath],\n testOutputs: [reportsDirectoryPath],\n hasTest: !!test,\n isBuildable,\n hasServeConfig,\n };\n}\n\nfunction normalizeOutputPath(\n outputPath: string | undefined,\n projectRoot: string,\n workspaceRoot: string,\n path: 'coverage' | 'dist'\n): string | undefined {\n if (!outputPath) {\n if (projectRoot === '.') {\n return `{projectRoot}/${path}`;\n } else {\n return `{workspaceRoot}/${path}/{projectRoot}`;\n }\n } else {\n if (isAbsolute(outputPath)) {\n return `{workspaceRoot}/${relative(workspaceRoot, outputPath)}`;\n } else {\n if (outputPath.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, outputPath));\n } else {\n return join('{projectRoot}', outputPath);\n }\n }\n }\n}\n\nfunction normalizeOptions(options: VitePluginOptions): VitePluginOptions {\n options ??= {};\n options.buildTargetName ??= 'build';\n options.serveTargetName ??= 'serve';\n options.devTargetName ??= 'dev';\n options.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n\nfunction checkIfConfigFileShouldBeProject(\n projectRoot: string,\n context: CreateNodesContext | CreateNodesContextV2\n): boolean {\n // Do not create a project if package.json and project.json isn't there.\n const siblingFiles = readdirSync(join(context.workspaceRoot, projectRoot));\n if (\n !siblingFiles.includes('package.json') &&\n !siblingFiles.includes('project.json')\n ) {\n return false;\n }\n\n return true;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","pmc","getPackageManagerCommand","readTargetsCache","cachePath","process","env","NX_CACHE_PROJECT_GRAPH","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","normalizedOptions","normalizeOptions","join","workspaceDataDirectory","targetsCache","isUsingTsSolutionSetup","_isUsingTsSolutionSetup","roots","projectRoots","configFiles","validConfigFiles","reduce","acc","configFile","potentialRoot","dirname","checkIfConfigFileShouldBeProject","push","lockfile","getLockFileName","detectPackageManager","workspaceRoot","hashes","calculateHashesForCreateNodes","map","r","createNodesFromFiles","_","idx","hash","projectRoot","siblingFiles","readdirSync","tsConfigFiles","filter","p","minimatch","hasReactRouterConfig","some","parts","split","length","projectType","metadata","targets","buildViteTargets","project","root","buildTargetName","projects","configFilePath","logger","warn","includes","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","testTargetName","testTarget","hasRemixPlugin","plugins","name","buildTarget","build","lib","devTarget","serveTarget","serveTargetName","deprecated","devTargetName","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","tsConfigToUse","find","t","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","technologies","help","exec","example","args","noEmit","dependsOn","syncGenerators","addBuildAndWatchDepsTargets","outputs","sourcemap","manifest","targetConfig","port","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","Boolean","reportsDirectoryPath","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { type Tree } from '@nx/devkit';
2
2
  export declare function getViteE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
3
+ export declare function getReactRouterE2EWebServerInfo(tree: Tree, projectName: string, configFilePath: string, isPluginBeingAdded: boolean, e2ePortOverride?: number): Promise<import("@nx/devkit/src/generators/e2e-web-server-info-utils").E2EWebServerDetails>;
@@ -1,7 +1,15 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "getViteE2EWebServerInfo", {
3
- enumerable: true,
4
- get: function() {
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
+ getReactRouterE2EWebServerInfo: function() {
10
+ return getReactRouterE2EWebServerInfo;
11
+ },
12
+ getViteE2EWebServerInfo: function() {
5
13
  return getViteE2EWebServerInfo;
6
14
  }
7
15
  });
@@ -29,5 +37,21 @@ async function getViteE2EWebServerInfo(tree, projectName, configFilePath, isPlug
29
37
  defaultE2EPort: e2ePort
30
38
  }, isPluginBeingAdded);
31
39
  }
40
+ async function getReactRouterE2EWebServerInfo(tree, projectName, configFilePath, isPluginBeingAdded, e2ePortOverride) {
41
+ var _ref;
42
+ const e2ePort = (_ref = e2ePortOverride != null ? e2ePortOverride : parseInt(process.env.PORT)) != null ? _ref : 4200;
43
+ return await (0, _e2ewebserverinfoutils.getE2EWebServerInfo)(tree, projectName, {
44
+ plugin: '@nx/react/router-plugin',
45
+ serveTargetName: 'devTargetName',
46
+ serveStaticTargetName: 'devTargetName',
47
+ configFilePath
48
+ }, {
49
+ defaultServeTargetName: 'dev',
50
+ defaultServeStaticTargetName: 'dev',
51
+ defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,
52
+ defaultE2ECiBaseUrl: 'http://localhost:4200',
53
+ defaultE2EPort: e2ePort
54
+ }, isPluginBeingAdded);
55
+ }
32
56
 
33
57
  //# sourceMappingURL=e2e-web-server-info-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/e2e-web-server-info-utils.ts"],"sourcesContent":["import { type Tree, readNxJson } from '@nx/devkit';\nimport { getE2EWebServerInfo } from '@nx/devkit/src/generators/e2e-web-server-info-utils';\n\nexport async function getViteE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number\n) {\n const nxJson = readNxJson(tree);\n let e2ePort = e2ePortOverride ?? 4200;\n\n if (\n (nxJson.targetDefaults?.['dev'] &&\n nxJson.targetDefaults?.['dev'].options?.port) ||\n (nxJson.targetDefaults?.['serve'] &&\n nxJson.targetDefaults?.['serve'].options?.port)\n ) {\n e2ePort =\n nxJson.targetDefaults?.['dev'].options?.port ??\n nxJson.targetDefaults?.['serve'].options?.port;\n }\n\n return getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/vite/plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'previewTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'preview',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: 'http://localhost:4300',\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n"],"names":["getViteE2EWebServerInfo","tree","projectName","configFilePath","isPluginBeingAdded","e2ePortOverride","nxJson","readNxJson","e2ePort","targetDefaults","options","port","getE2EWebServerInfo","plugin","serveTargetName","serveStaticTargetName","defaultServeTargetName","defaultServeStaticTargetName","defaultE2EWebServerAddress","defaultE2ECiBaseUrl","defaultE2EPort"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";+BAGsBA;;;eAAAA;;;wBAHgB;uCACF;AAE7B,eAAeA,wBACpBC,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB;QAMrBC,wBACCA,oCAAAA,yBACDA,yBACCA,sCAAAA;IAPJ,MAAMA,SAASC,IAAAA,kBAAU,EAACN;IAC1B,IAAIO,UAAUH,0BAAAA,kBAAmB;IAEjC,IACE,EAACC,yBAAAA,OAAOG,cAAc,qBAArBH,sBAAuB,CAAC,MAAM,OAC7BA,0BAAAA,OAAOG,cAAc,sBAArBH,qCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,mCAAwCK,IAAI,KAC7CL,EAAAA,0BAAAA,OAAOG,cAAc,qBAArBH,uBAAuB,CAAC,QAAQ,OAC/BA,0BAAAA,OAAOG,cAAc,sBAArBH,uCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,qCAA0CK,IAAI,GAChD;YAEEL,qCAAAA,yBACAA,uCAAAA;YADAA;QADFE,UACEF,CAAAA,2CAAAA,0BAAAA,OAAOG,cAAc,sBAArBH,sCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,oCAAwCK,IAAI,YAA5CL,2CACAA,0BAAAA,OAAOG,cAAc,sBAArBH,wCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,sCAA0CK,IAAI;IAClD;IAEA,OAAOC,IAAAA,0CAAmB,EACxBX,MACAC,aACA;QACEW,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBZ;IACF,GACA;QACEa,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB;QACrBC,gBAAgBZ;IAClB,GACAJ;AAEJ"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/e2e-web-server-info-utils.ts"],"sourcesContent":["import { type Tree, readNxJson } from '@nx/devkit';\nimport { getE2EWebServerInfo } from '@nx/devkit/src/generators/e2e-web-server-info-utils';\n\nexport async function getViteE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number\n) {\n const nxJson = readNxJson(tree);\n let e2ePort = e2ePortOverride ?? 4200;\n\n if (\n (nxJson.targetDefaults?.['dev'] &&\n nxJson.targetDefaults?.['dev'].options?.port) ||\n (nxJson.targetDefaults?.['serve'] &&\n nxJson.targetDefaults?.['serve'].options?.port)\n ) {\n e2ePort =\n nxJson.targetDefaults?.['dev'].options?.port ??\n nxJson.targetDefaults?.['serve'].options?.port;\n }\n\n return getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/vite/plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'previewTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'preview',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: 'http://localhost:4300',\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n\nexport async function getReactRouterE2EWebServerInfo(\n tree: Tree,\n projectName: string,\n configFilePath: string,\n isPluginBeingAdded: boolean,\n e2ePortOverride?: number\n) {\n const e2ePort = e2ePortOverride ?? parseInt(process.env.PORT) ?? 4200;\n\n return await getE2EWebServerInfo(\n tree,\n projectName,\n {\n plugin: '@nx/react/router-plugin',\n serveTargetName: 'devTargetName',\n serveStaticTargetName: 'devTargetName',\n configFilePath,\n },\n {\n defaultServeTargetName: 'dev',\n defaultServeStaticTargetName: 'dev',\n defaultE2EWebServerAddress: `http://localhost:${e2ePort}`,\n defaultE2ECiBaseUrl: 'http://localhost:4200',\n defaultE2EPort: e2ePort,\n },\n isPluginBeingAdded\n );\n}\n"],"names":["getReactRouterE2EWebServerInfo","getViteE2EWebServerInfo","tree","projectName","configFilePath","isPluginBeingAdded","e2ePortOverride","nxJson","readNxJson","e2ePort","targetDefaults","options","port","getE2EWebServerInfo","plugin","serveTargetName","serveStaticTargetName","defaultServeTargetName","defaultServeStaticTargetName","defaultE2EWebServerAddress","defaultE2ECiBaseUrl","defaultE2EPort","parseInt","process","env","PORT"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IA4CsBA,8BAA8B;eAA9BA;;IAzCAC,uBAAuB;eAAvBA;;;wBAHgB;uCACF;AAE7B,eAAeA,wBACpBC,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB;QAMrBC,wBACCA,oCAAAA,yBACDA,yBACCA,sCAAAA;IAPJ,MAAMA,SAASC,IAAAA,kBAAU,EAACN;IAC1B,IAAIO,UAAUH,0BAAAA,kBAAmB;IAEjC,IACE,EAACC,yBAAAA,OAAOG,cAAc,qBAArBH,sBAAuB,CAAC,MAAM,OAC7BA,0BAAAA,OAAOG,cAAc,sBAArBH,qCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,mCAAwCK,IAAI,KAC7CL,EAAAA,0BAAAA,OAAOG,cAAc,qBAArBH,uBAAuB,CAAC,QAAQ,OAC/BA,0BAAAA,OAAOG,cAAc,sBAArBH,uCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,qCAA0CK,IAAI,GAChD;YAEEL,qCAAAA,yBACAA,uCAAAA;YADAA;QADFE,UACEF,CAAAA,2CAAAA,0BAAAA,OAAOG,cAAc,sBAArBH,sCAAAA,uBAAuB,CAAC,MAAM,CAACI,OAAO,qBAAtCJ,oCAAwCK,IAAI,YAA5CL,2CACAA,0BAAAA,OAAOG,cAAc,sBAArBH,wCAAAA,uBAAuB,CAAC,QAAQ,CAACI,OAAO,qBAAxCJ,sCAA0CK,IAAI;IAClD;IAEA,OAAOC,IAAAA,0CAAmB,EACxBX,MACAC,aACA;QACEW,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBZ;IACF,GACA;QACEa,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB;QACrBC,gBAAgBZ;IAClB,GACAJ;AAEJ;AAEO,eAAeL,+BACpBE,IAAU,EACVC,WAAmB,EACnBC,cAAsB,EACtBC,kBAA2B,EAC3BC,eAAwB;QAERA;IAAhB,MAAMG,UAAUH,CAAAA,OAAAA,0BAAAA,kBAAmBgB,SAASC,QAAQC,GAAG,CAACC,IAAI,aAA5CnB,OAAiD;IAEjE,OAAO,MAAMO,IAAAA,0CAAmB,EAC9BX,MACAC,aACA;QACEW,QAAQ;QACRC,iBAAiB;QACjBC,uBAAuB;QACvBZ;IACF,GACA;QACEa,wBAAwB;QACxBC,8BAA8B;QAC9BC,4BAA4B,CAAC,iBAAiB,EAAEV,QAAQ,CAAC;QACzDW,qBAAqB;QACrBC,gBAAgBZ;IAClB,GACAJ;AAEJ"}
@@ -322,7 +322,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
322
322
  fileName: 'index',
323
323
  // Change this to the formats you want to support.
324
324
  // Don't forget to update your package.json as well.
325
- formats: ['es']
325
+ formats: ['es' as const]
326
326
  },
327
327
  rollupOptions: {
328
328
  // External packages that should not be bundled into your library.
@@ -358,7 +358,7 @@ function createOrEditViteConfig(tree, options, onlyVitest, projectAlreadyHasVite
358
358
  watch: false,
359
359
  globals: true,
360
360
  environment: '${(_options_testEnvironment = options.testEnvironment) != null ? _options_testEnvironment : 'jsdom'}',
361
- include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
361
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
362
362
  ${options.setupFile ? ` setupFiles: ['${options.setupFile}'],\n` : ''}\
363
363
  ${options.inSourceTests ? ` includeSource: ['src/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],\n` : ''}\
364
364
  reporters: ['default'],