@nx/vite 20.2.0-beta.2 → 20.2.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.2.0-beta.2",
3
+ "version": "20.2.0-beta.4",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -30,11 +30,11 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nx/devkit": "20.2.0-beta.2",
33
+ "@nx/devkit": "20.2.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.2.0-beta.2",
37
+ "@nx/js": "20.2.0-beta.4",
38
38
  "tsconfig-paths": "^4.1.2",
39
39
  "minimatch": "9.0.3"
40
40
  },
@@ -40,8 +40,8 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
40
40
  const tasks = [];
41
41
  const projectConfig = (0, _devkit.readProjectConfiguration)(tree, schema.project);
42
42
  const { targets, root: projectRoot } = projectConfig;
43
- var _projectConfig_projectType;
44
- const projectType = (_projectConfig_projectType = projectConfig.projectType) != null ? _projectConfig_projectType : 'library';
43
+ var _schema_projectType, _ref;
44
+ const projectType = (_ref = (_schema_projectType = schema.projectType) != null ? _schema_projectType : projectConfig.projectType) != null ? _ref : 'library';
45
45
  var _includeLib;
46
46
  (_includeLib = (_schema = schema).includeLib) != null ? _includeLib : _schema.includeLib = projectType === 'library';
47
47
  var _testEnvironment;
@@ -129,12 +129,13 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
129
129
  testTarget: 'test',
130
130
  skipFormat: true,
131
131
  addPlugin: schema.addPlugin,
132
- compiler: schema.compiler
132
+ compiler: schema.compiler,
133
+ projectType
133
134
  });
134
135
  tasks.push(vitestTask);
135
136
  }
136
137
  if ((0, _tssolutionsetup.isUsingTsSolutionSetup)(tree)) {
137
- updatePackageJson(tree, schema);
138
+ updatePackageJson(tree, schema, projectType);
138
139
  }
139
140
  if (!schema.skipFormat) {
140
141
  await (0, _devkit.formatFiles)(tree);
@@ -142,7 +143,7 @@ async function viteConfigurationGeneratorInternal(tree, schema) {
142
143
  return (0, _devkit.runTasksInSerial)(...tasks);
143
144
  }
144
145
  const _default = viteConfigurationGenerator;
145
- function updatePackageJson(tree, options) {
146
+ function updatePackageJson(tree, options, projectType) {
146
147
  const project = (0, _devkit.readProjectConfiguration)(tree, options.project);
147
148
  const packageJsonPath = (0, _posix.join)(project.root, 'package.json');
148
149
  let packageJson;
@@ -153,29 +154,34 @@ function updatePackageJson(tree, options) {
153
154
  name: (0, _getimportpath.getImportPath)(tree, options.project),
154
155
  version: '0.0.1'
155
156
  };
157
+ if (projectType === 'application') {
158
+ packageJson.private = true;
159
+ }
160
+ }
161
+ if (projectType === 'library') {
162
+ // we always write/override the vite and project config with some set values,
163
+ // so we can rely on them
164
+ const main = (0, _posix.join)(project.root, 'src/index.ts');
165
+ // we configure the dts plugin with the entryRoot set to `src`
166
+ const rootDir = (0, _posix.join)(project.root, 'src');
167
+ const outputPath = (0, _devkit.joinPathFragments)(project.root, 'dist');
168
+ packageJson = (0, _js.getUpdatedPackageJsonContent)(packageJson, {
169
+ main,
170
+ outputPath,
171
+ projectRoot: project.root,
172
+ rootDir,
173
+ generateExportsField: true,
174
+ packageJsonPath,
175
+ format: [
176
+ 'esm',
177
+ 'cjs'
178
+ ],
179
+ // when building both formats, we don't set the package.json "type" field, so
180
+ // we need to set the esm extension to ".mjs" to match vite output
181
+ // see the "File Extensions" callout in https://vite.dev/guide/build.html#library-mode
182
+ outputFileExtensionForEsm: '.mjs'
183
+ });
156
184
  }
157
- // we always write/override the vite and project config with some set values,
158
- // so we can rely on them
159
- const main = (0, _posix.join)(project.root, 'src/index.ts');
160
- // we configure the dts plugin with the entryRoot set to `src`
161
- const rootDir = (0, _posix.join)(project.root, 'src');
162
- const outputPath = (0, _devkit.joinPathFragments)(project.root, 'dist');
163
- packageJson = (0, _js.getUpdatedPackageJsonContent)(packageJson, {
164
- main,
165
- outputPath,
166
- projectRoot: project.root,
167
- rootDir,
168
- generateExportsField: true,
169
- packageJsonPath,
170
- format: [
171
- 'esm',
172
- 'cjs'
173
- ],
174
- // when building both formats, we don't set the package.json "type" field, so
175
- // we need to set the esm extension to ".mjs" to match vite output
176
- // see the "File Extensions" callout in https://vite.dev/guide/build.html#library-mode
177
- outputFileExtensionForEsm: '.mjs'
178
- });
179
185
  (0, _devkit.writeJson)(tree, packageJsonPath, packageJson);
180
186
  }
181
187
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport {\n getUpdatedPackageJsonContent,\n initGenerator as jsInitGenerator,\n} from '@nx/js';\nimport { getImportPath } from '@nx/js/src/utils/get-import-path';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'node:path/posix';\nimport type { PackageJson } from 'nx/src/utils/package-json';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addBuildTarget,\n addPreviewTarget,\n addServeTarget,\n createOrEditViteConfig,\n TargetFlags,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { convertNonVite } from './lib/convert-non-vite';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const { targets, root: projectRoot } = projectConfig;\n\n const projectType = projectConfig.projectType ?? 'library';\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n await convertNonVite(tree, schema, projectRoot, projectType, targets);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, { ...schema, skipFormat: true });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addBuildTarget(tree, schema, 'build');\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addServeTarget(tree, schema, 'serve');\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, 'preview');\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n json.compilerOptions ??= {};\n json.compilerOptions.types ??= [];\n if (!json.compilerOptions.types.includes('vite/client')) {\n json.compilerOptions.types.push('vite/client');\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: 'test',\n skipFormat: true,\n addPlugin: schema.addPlugin,\n compiler: schema.compiler,\n });\n tasks.push(vitestTask);\n }\n\n if (isUsingTsSolutionSetup(tree)) {\n updatePackageJson(tree, schema);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n\nfunction updatePackageJson(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const packageJsonPath = join(project.root, 'package.json');\n let packageJson: PackageJson;\n if (tree.exists(packageJsonPath)) {\n packageJson = readJson(tree, packageJsonPath);\n } else {\n packageJson = {\n name: getImportPath(tree, options.project),\n version: '0.0.1',\n };\n }\n\n // we always write/override the vite and project config with some set values,\n // so we can rely on them\n const main = join(project.root, 'src/index.ts');\n // we configure the dts plugin with the entryRoot set to `src`\n const rootDir = join(project.root, 'src');\n const outputPath = joinPathFragments(project.root, 'dist');\n\n packageJson = getUpdatedPackageJsonContent(packageJson, {\n main,\n outputPath,\n projectRoot: project.root,\n rootDir,\n generateExportsField: true,\n packageJsonPath,\n format: ['esm', 'cjs'],\n // when building both formats, we don't set the package.json \"type\" field, so\n // we need to set the esm extension to \".mjs\" to match vite output\n // see the \"File Extensions\" callout in https://vite.dev/guide/build.html#library-mode\n outputFileExtensionForEsm: '.mjs',\n });\n\n writeJson(tree, packageJsonPath, packageJson);\n}\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","convertNonVite","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","hasPlugin","plugins","some","p","plugin","build","addBuildTarget","serve","addServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","testTarget","isUsingTsSolutionSetup","updatePackageJson","formatFiles","runTasksInSerial","options","packageJsonPath","join","packageJson","exists","readJson","name","getImportPath","version","main","rootDir","outputPath","getUpdatedPackageJsonContent","generateExportsField","format","outputFileExtensionForEsm","writeJson"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/configuration/configuration.ts"],"sourcesContent":["import {\n formatFiles,\n GeneratorCallback,\n joinPathFragments,\n readJson,\n readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n writeJson,\n} from '@nx/devkit';\nimport {\n getUpdatedPackageJsonContent,\n initGenerator as jsInitGenerator,\n} from '@nx/js';\nimport { getImportPath } from '@nx/js/src/utils/get-import-path';\nimport { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';\nimport { join } from 'node:path/posix';\nimport type { PackageJson } from 'nx/src/utils/package-json';\nimport { ensureDependencies } from '../../utils/ensure-dependencies';\nimport {\n addBuildTarget,\n addPreviewTarget,\n addServeTarget,\n createOrEditViteConfig,\n TargetFlags,\n} from '../../utils/generator-utils';\nimport initGenerator from '../init/init';\nimport vitestGenerator from '../vitest/vitest-generator';\nimport { convertNonVite } from './lib/convert-non-vite';\nimport { ViteConfigurationGeneratorSchema } from './schema';\n\nexport function viteConfigurationGenerator(\n host: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n return viteConfigurationGeneratorInternal(host, {\n addPlugin: false,\n ...schema,\n });\n}\n\nexport async function viteConfigurationGeneratorInternal(\n tree: Tree,\n schema: ViteConfigurationGeneratorSchema\n) {\n const tasks: GeneratorCallback[] = [];\n\n const projectConfig = readProjectConfiguration(tree, schema.project);\n const { targets, root: projectRoot } = projectConfig;\n\n const projectType =\n schema.projectType ?? projectConfig.projectType ?? 'library';\n\n schema.includeLib ??= projectType === 'library';\n\n // Setting default to jsdom since it is the most common use case (React, Web).\n // The @nx/js:lib generator specifically sets this to node to be more generic.\n schema.testEnvironment ??= 'jsdom';\n\n /**\n * This is for when we are converting an existing project\n * to use the vite executors.\n */\n let projectAlreadyHasViteTargets: TargetFlags = {};\n\n if (!schema.newProject) {\n await convertNonVite(tree, schema, projectRoot, projectType, targets);\n }\n\n const jsInitTask = await jsInitGenerator(tree, {\n ...schema,\n skipFormat: true,\n tsConfigName: projectRoot === '.' ? 'tsconfig.json' : 'tsconfig.base.json',\n });\n tasks.push(jsInitTask);\n const initTask = await initGenerator(tree, { ...schema, skipFormat: true });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const addPluginDefault =\n process.env.NX_ADD_PLUGINS !== 'false' &&\n nxJson.useInferencePlugins !== false;\n schema.addPlugin ??= addPluginDefault;\n\n const hasPlugin = nxJson.plugins?.some((p) =>\n typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin'\n );\n\n if (!hasPlugin) {\n if (!projectAlreadyHasViteTargets.build) {\n addBuildTarget(tree, schema, 'build');\n }\n\n if (!schema.includeLib) {\n if (!projectAlreadyHasViteTargets.serve) {\n addServeTarget(tree, schema, 'serve');\n }\n if (!projectAlreadyHasViteTargets.preview) {\n addPreviewTarget(tree, schema, 'preview');\n }\n }\n }\n if (projectType === 'library') {\n // update tsconfig.lib.json to include vite/client\n updateJson(\n tree,\n joinPathFragments(projectRoot, 'tsconfig.lib.json'),\n (json) => {\n json.compilerOptions ??= {};\n json.compilerOptions.types ??= [];\n if (!json.compilerOptions.types.includes('vite/client')) {\n json.compilerOptions.types.push('vite/client');\n }\n return json;\n }\n );\n }\n\n if (!schema.newProject) {\n // We are converting existing project to use Vite\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: schema.includeLib,\n includeVitest: schema.includeVitest,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\n schema.compiler === 'swc'\n ? `import react from '@vitejs/plugin-react-swc'`\n : `import react from '@vitejs/plugin-react'`,\n ],\n plugins: ['react()'],\n },\n false,\n undefined\n );\n } else {\n createOrEditViteConfig(tree, schema, false, projectAlreadyHasViteTargets);\n }\n }\n\n if (schema.includeVitest) {\n const vitestTask = await vitestGenerator(tree, {\n project: schema.project,\n uiFramework: schema.uiFramework,\n inSourceTests: schema.inSourceTests,\n coverageProvider: 'v8',\n skipViteConfig: true,\n testTarget: 'test',\n skipFormat: true,\n addPlugin: schema.addPlugin,\n compiler: schema.compiler,\n projectType,\n });\n tasks.push(vitestTask);\n }\n\n if (isUsingTsSolutionSetup(tree)) {\n updatePackageJson(tree, schema, projectType);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default viteConfigurationGenerator;\n\nfunction updatePackageJson(\n tree: Tree,\n options: ViteConfigurationGeneratorSchema,\n projectType: 'application' | 'library'\n) {\n const project = readProjectConfiguration(tree, options.project);\n\n const packageJsonPath = join(project.root, 'package.json');\n let packageJson: PackageJson;\n if (tree.exists(packageJsonPath)) {\n packageJson = readJson(tree, packageJsonPath);\n } else {\n packageJson = {\n name: getImportPath(tree, options.project),\n version: '0.0.1',\n };\n if (projectType === 'application') {\n packageJson.private = true;\n }\n }\n\n if (projectType === 'library') {\n // we always write/override the vite and project config with some set values,\n // so we can rely on them\n const main = join(project.root, 'src/index.ts');\n // we configure the dts plugin with the entryRoot set to `src`\n const rootDir = join(project.root, 'src');\n const outputPath = joinPathFragments(project.root, 'dist');\n\n packageJson = getUpdatedPackageJsonContent(packageJson, {\n main,\n outputPath,\n projectRoot: project.root,\n rootDir,\n generateExportsField: true,\n packageJsonPath,\n format: ['esm', 'cjs'],\n // when building both formats, we don't set the package.json \"type\" field, so\n // we need to set the esm extension to \".mjs\" to match vite output\n // see the \"File Extensions\" callout in https://vite.dev/guide/build.html#library-mode\n outputFileExtensionForEsm: '.mjs',\n });\n }\n\n writeJson(tree, packageJsonPath, packageJson);\n}\n"],"names":["viteConfigurationGenerator","viteConfigurationGeneratorInternal","host","schema","addPlugin","tree","nxJson","tasks","projectConfig","readProjectConfiguration","project","targets","root","projectRoot","projectType","includeLib","testEnvironment","projectAlreadyHasViteTargets","newProject","convertNonVite","jsInitTask","jsInitGenerator","skipFormat","tsConfigName","push","initTask","initGenerator","ensureDependencies","readNxJson","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","hasPlugin","plugins","some","p","plugin","build","addBuildTarget","serve","addServeTarget","preview","addPreviewTarget","updateJson","joinPathFragments","json","compilerOptions","types","includes","uiFramework","createOrEditViteConfig","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","undefined","vitestTask","vitestGenerator","coverageProvider","skipViteConfig","testTarget","isUsingTsSolutionSetup","updatePackageJson","formatFiles","runTasksInSerial","options","packageJsonPath","join","packageJson","exists","readJson","name","getImportPath","version","private","main","rootDir","outputPath","getUpdatedPackageJsonContent","generateExportsField","format","outputFileExtensionForEsm","writeJson"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAoLA,OAA0C;eAA1C;;IAnJgBA,0BAA0B;eAA1BA;;IAUMC,kCAAkC;eAAlCA;;;;wBAhCf;oBAIA;+BACuB;iCACS;uBAClB;oCAEc;gCAO5B;sBACmB;iCACE;gCACG;AAGxB,SAASD,2BACdE,IAAU,EACVC,MAAwC;IAExC,OAAOF,mCAAmCC,MAAM;QAC9CE,WAAW;OACRD;AAEP;AAEO,eAAeF,mCACpBI,IAAU,EACVF,MAAwC;QA0CtBG;QAhClBH,SAEA,8EAA8E;IAC9E,8EAA8E;IAC9EA,UA0BAA;IAtCA,MAAMI,QAA6B,EAAE;IAErC,MAAMC,gBAAgBC,IAAAA,gCAAwB,EAACJ,MAAMF,OAAOO,OAAO;IACnE,MAAM,EAAEC,OAAO,EAAEC,MAAMC,WAAW,EAAE,GAAGL;QAGrCL,qBAAAA;IADF,MAAMW,cACJX,CAAAA,OAAAA,CAAAA,sBAAAA,OAAOW,WAAW,YAAlBX,sBAAsBK,cAAcM,WAAW,YAA/CX,OAAmD;;IAErDA,gBAAAA,UAAAA,QAAOY,oCAAPZ,QAAOY,aAAeD,gBAAgB;;IAItCX,qBAAAA,WAAAA,QAAOa,8CAAPb,SAAOa,kBAAoB;IAE3B;;;GAGC,GACD,IAAIC,+BAA4C,CAAC;IAEjD,IAAI,CAACd,OAAOe,UAAU,EAAE;QACtB,MAAMC,IAAAA,8BAAc,EAACd,MAAMF,QAAQU,aAAaC,aAAaH;IAC/D;IAEA,MAAMS,aAAa,MAAMC,IAAAA,iBAAe,EAAChB,MAAM,eAC1CF;QACHmB,YAAY;QACZC,cAAcV,gBAAgB,MAAM,kBAAkB;;IAExDN,MAAMiB,IAAI,CAACJ;IACX,MAAMK,WAAW,MAAMC,IAAAA,aAAa,EAACrB,MAAM,eAAKF;QAAQmB,YAAY;;IACpEf,MAAMiB,IAAI,CAACC;IACXlB,MAAMiB,IAAI,CAACG,IAAAA,sCAAkB,EAACtB,MAAMF;IAEpC,MAAMG,SAASsB,IAAAA,kBAAU,EAACvB;IAC1B,MAAMwB,mBACJC,QAAQC,GAAG,CAACC,cAAc,KAAK,WAC/B1B,OAAO2B,mBAAmB,KAAK;;IACjC9B,eAAAA,WAAAA,QAAOC,kCAAPD,SAAOC,YAAcyB;IAErB,MAAMK,aAAY5B,kBAAAA,OAAO6B,OAAO,qBAAd7B,gBAAgB8B,IAAI,CAAC,CAACC,IACtC,OAAOA,MAAM,WACTA,MAAM,oBACNA,EAAEC,MAAM,KAAK;IAGnB,IAAI,CAACJ,WAAW;QACd,IAAI,CAACjB,6BAA6BsB,KAAK,EAAE;YACvCC,IAAAA,8BAAc,EAACnC,MAAMF,QAAQ;QAC/B;QAEA,IAAI,CAACA,OAAOY,UAAU,EAAE;YACtB,IAAI,CAACE,6BAA6BwB,KAAK,EAAE;gBACvCC,IAAAA,8BAAc,EAACrC,MAAMF,QAAQ;YAC/B;YACA,IAAI,CAACc,6BAA6B0B,OAAO,EAAE;gBACzCC,IAAAA,gCAAgB,EAACvC,MAAMF,QAAQ;YACjC;QACF;IACF;IACA,IAAIW,gBAAgB,WAAW;QAC7B,kDAAkD;QAClD+B,IAAAA,kBAAU,EACRxC,MACAyC,IAAAA,yBAAiB,EAACjC,aAAa,sBAC/B,CAACkC;gBACCA,OACAA;;YADAA,qBAAAA,QAAAA,MAAKC,8CAALD,MAAKC,kBAAoB,CAAC;;YAC1BD,WAAAA,wBAAAA,KAAKC,eAAe,EAACC,0BAArBF,sBAAqBE,QAAU,EAAE;YACjC,IAAI,CAACF,KAAKC,eAAe,CAACC,KAAK,CAACC,QAAQ,CAAC,gBAAgB;gBACvDH,KAAKC,eAAe,CAACC,KAAK,CAACzB,IAAI,CAAC;YAClC;YACA,OAAOuB;QACT;IAEJ;IAEA,IAAI,CAAC5C,OAAOe,UAAU,EAAE;QACtB,iDAAiD;QACjD,IAAIf,OAAOgD,WAAW,KAAK,SAAS;YAClCC,IAAAA,sCAAsB,EACpB/C,MACA;gBACEK,SAASP,OAAOO,OAAO;gBACvBK,YAAYZ,OAAOY,UAAU;gBAC7BsC,eAAelD,OAAOkD,aAAa;gBACnCC,eAAenD,OAAOmD,aAAa;gBACnCC,uBAAuB;oBACrB;oBACA;oBACA;iBACD;gBACDC,SAAS;oBACPrD,OAAOsD,QAAQ,KAAK,QAChB,CAAC,4CAA4C,CAAC,GAC9C,CAAC,wCAAwC,CAAC;iBAC/C;gBACDtB,SAAS;oBAAC;iBAAU;YACtB,GACA,OACAuB;QAEJ,OAAO;YACLN,IAAAA,sCAAsB,EAAC/C,MAAMF,QAAQ,OAAOc;QAC9C;IACF;IAEA,IAAId,OAAOkD,aAAa,EAAE;QACxB,MAAMM,aAAa,MAAMC,IAAAA,wBAAe,EAACvD,MAAM;YAC7CK,SAASP,OAAOO,OAAO;YACvByC,aAAahD,OAAOgD,WAAW;YAC/BG,eAAenD,OAAOmD,aAAa;YACnCO,kBAAkB;YAClBC,gBAAgB;YAChBC,YAAY;YACZzC,YAAY;YACZlB,WAAWD,OAAOC,SAAS;YAC3BqD,UAAUtD,OAAOsD,QAAQ;YACzB3C;QACF;QACAP,MAAMiB,IAAI,CAACmC;IACb;IAEA,IAAIK,IAAAA,uCAAsB,EAAC3D,OAAO;QAChC4D,kBAAkB5D,MAAMF,QAAQW;IAClC;IAEA,IAAI,CAACX,OAAOmB,UAAU,EAAE;QACtB,MAAM4C,IAAAA,mBAAW,EAAC7D;IACpB;IAEA,OAAO8D,IAAAA,wBAAgB,KAAI5D;AAC7B;MAEA,WAAeP;AAEf,SAASiE,kBACP5D,IAAU,EACV+D,OAAyC,EACzCtD,WAAsC;IAEtC,MAAMJ,UAAUD,IAAAA,gCAAwB,EAACJ,MAAM+D,QAAQ1D,OAAO;IAE9D,MAAM2D,kBAAkBC,IAAAA,WAAI,EAAC5D,QAAQE,IAAI,EAAE;IAC3C,IAAI2D;IACJ,IAAIlE,KAAKmE,MAAM,CAACH,kBAAkB;QAChCE,cAAcE,IAAAA,gBAAQ,EAACpE,MAAMgE;IAC/B,OAAO;QACLE,cAAc;YACZG,MAAMC,IAAAA,4BAAa,EAACtE,MAAM+D,QAAQ1D,OAAO;YACzCkE,SAAS;QACX;QACA,IAAI9D,gBAAgB,eAAe;YACjCyD,YAAYM,OAAO,GAAG;QACxB;IACF;IAEA,IAAI/D,gBAAgB,WAAW;QAC7B,6EAA6E;QAC7E,yBAAyB;QACzB,MAAMgE,OAAOR,IAAAA,WAAI,EAAC5D,QAAQE,IAAI,EAAE;QAChC,8DAA8D;QAC9D,MAAMmE,UAAUT,IAAAA,WAAI,EAAC5D,QAAQE,IAAI,EAAE;QACnC,MAAMoE,aAAalC,IAAAA,yBAAiB,EAACpC,QAAQE,IAAI,EAAE;QAEnD2D,cAAcU,IAAAA,gCAA4B,EAACV,aAAa;YACtDO;YACAE;YACAnE,aAAaH,QAAQE,IAAI;YACzBmE;YACAG,sBAAsB;YACtBb;YACAc,QAAQ;gBAAC;gBAAO;aAAM;YACtB,6EAA6E;YAC7E,kEAAkE;YAClE,sFAAsF;YACtFC,2BAA2B;QAC7B;IACF;IAEAC,IAAAA,iBAAS,EAAChF,MAAMgE,iBAAiBE;AACnC"}
@@ -8,5 +8,7 @@ export interface ViteConfigurationGeneratorSchema {
8
8
  includeLib?: boolean;
9
9
  skipFormat?: boolean;
10
10
  testEnvironment?: 'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string;
11
+ // Internal options
11
12
  addPlugin?: boolean;
13
+ projectType?: 'application' | 'library';
12
14
  }
@@ -10,4 +10,6 @@ export interface VitestGeneratorSchema {
10
10
  addPlugin?: boolean;
11
11
  runtimeTsconfigFileName?: string;
12
12
  compiler?: 'babel' | 'swc'; // default: babel
13
+ // internal options
14
+ projectType?: 'application' | 'library';
13
15
  }
@@ -38,7 +38,9 @@ async function vitestGeneratorInternal(tree, schema, hasPlugin = false) {
38
38
  var _testEnvironment;
39
39
  (_testEnvironment = (_schema = schema).testEnvironment) != null ? _testEnvironment : _schema.testEnvironment = 'jsdom';
40
40
  const tasks = [];
41
- const { root, projectType } = (0, _devkit.readProjectConfiguration)(tree, schema.project);
41
+ const { root, projectType: _projectType } = (0, _devkit.readProjectConfiguration)(tree, schema.project);
42
+ var _schema_projectType;
43
+ const projectType = (_schema_projectType = schema.projectType) != null ? _schema_projectType : _projectType;
42
44
  const isRootProject = root === '.';
43
45
  tasks.push(await (0, _js.initGenerator)(tree, _extends._({}, schema, {
44
46
  skipFormat: true
@@ -205,7 +207,7 @@ function createFiles(tree, options, projectRoot) {
205
207
  }, options, {
206
208
  projectRoot,
207
209
  extendedConfig: isTsSolutionSetup ? `${rootOffset}tsconfig.base.json` : './tsconfig.json',
208
- outDir: isTsSolutionSetup ? `./out-tsc/jest` : `${rootOffset}dist/out-tsc`
210
+ outDir: isTsSolutionSetup ? `./out-tsc/vitest` : `${rootOffset}dist/out-tsc`
209
211
  }));
210
212
  }
211
213
  function getCoverageProviderDependency(coverageProvider) {
@@ -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 readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\nimport { isUsingTsSolutionSetup } 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 {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\nimport initGenerator from '../init/init';\nimport { VitestGeneratorSchema } from './schema';\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 } = readProjectConfiguration(tree, schema.project);\n const isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget = schema.testTarget ?? 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\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: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root, projectType);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n // 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.{ts,mts}', '**/*/vitest.config.{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 projectType === 'application' ? 'tsconfig.app.json' : '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) {\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\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 ? `./out-tsc/jest` : `${rootOffset}dist/out-tsc`,\n });\n}\n\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\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","nxJson","testEnvironment","tasks","root","projectType","readProjectConfiguration","project","isRootProject","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","exists","write","formatFiles","runTasksInSerial","options","projectRoot","setupFile","tryFindSetupFile","joinPathFragments","updateJson","json","compilerOptions","types","includes","files","references","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","isTsSolutionSetup","isUsingTsSolutionSetup","rootOffset","offsetFromRoot","generateFiles","join","__dirname","tmpl","extendedConfig","outDir","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"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 readNxJson,\n readProjectConfiguration,\n runTasksInSerial,\n Tree,\n updateJson,\n} from '@nx/devkit';\nimport { initGenerator as jsInitGenerator } from '@nx/js';\nimport { isUsingTsSolutionSetup } 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 {\n vitestCoverageIstanbulVersion,\n vitestCoverageV8Version,\n} from '../../utils/versions';\nimport initGenerator from '../init/init';\nimport { VitestGeneratorSchema } from './schema';\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 isRootProject = root === '.';\n\n tasks.push(await jsInitGenerator(tree, { ...schema, skipFormat: true }));\n const initTask = await initGenerator(tree, {\n skipFormat: true,\n addPlugin: schema.addPlugin,\n });\n tasks.push(initTask);\n tasks.push(ensureDependencies(tree, schema));\n\n const nxJson = readNxJson(tree);\n const hasPluginCheck = nxJson.plugins?.some(\n (p) =>\n (typeof p === 'string'\n ? p === '@nx/vite/plugin'\n : p.plugin === '@nx/vite/plugin') || hasPlugin\n );\n if (!hasPluginCheck) {\n const testTarget = schema.testTarget ?? 'test';\n addOrChangeTestTarget(tree, schema, testTarget);\n }\n\n if (!schema.skipViteConfig) {\n if (schema.uiFramework === 'react') {\n createOrEditViteConfig(\n tree,\n {\n project: schema.project,\n includeLib: projectType === 'library',\n includeVitest: true,\n inSourceTests: schema.inSourceTests,\n rollupOptionsExternal: [\n \"'react'\",\n \"'react-dom'\",\n \"'react/jsx-runtime'\",\n ],\n imports: [\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: projectType === 'library',\n },\n true\n );\n }\n }\n\n createFiles(tree, schema, root);\n updateTsConfig(tree, schema, root, projectType);\n\n const coverageProviderDependency = getCoverageProviderDependency(\n schema.coverageProvider\n );\n\n const installCoverageProviderTask = addDependenciesToPackageJson(\n tree,\n {},\n coverageProviderDependency\n );\n tasks.push(installCoverageProviderTask);\n\n // 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.{ts,mts}', '**/*/vitest.config.{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 projectType === 'application' ? 'tsconfig.app.json' : '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) {\n const isTsSolutionSetup = isUsingTsSolutionSetup(tree);\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\nfunction getCoverageProviderDependency(\n coverageProvider: VitestGeneratorSchema['coverageProvider']\n) {\n switch (coverageProvider) {\n case 'v8':\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n case 'istanbul':\n return {\n '@vitest/coverage-istanbul': vitestCoverageIstanbulVersion,\n };\n default:\n return {\n '@vitest/coverage-v8': vitestCoverageV8Version,\n };\n }\n}\n\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","nxJson","testEnvironment","tasks","root","projectType","_projectType","readProjectConfiguration","project","isRootProject","push","jsInitGenerator","skipFormat","initTask","initGenerator","ensureDependencies","readNxJson","hasPluginCheck","plugins","some","p","plugin","testTarget","addOrChangeTestTarget","skipViteConfig","uiFramework","createOrEditViteConfig","includeLib","includeVitest","inSourceTests","rollupOptionsExternal","imports","compiler","coverageProvider","createFiles","updateTsConfig","coverageProviderDependency","getCoverageProviderDependency","installCoverageProviderTask","addDependenciesToPackageJson","exists","write","formatFiles","runTasksInSerial","options","projectRoot","setupFile","tryFindSetupFile","joinPathFragments","updateJson","json","compilerOptions","types","includes","files","references","r","path","runtimeTsconfigPath","runtimeTsconfigFileName","Error","uniqueExclude","Set","exclude","logger","warn","isTsSolutionSetup","isUsingTsSolutionSetup","rootOffset","offsetFromRoot","generateFiles","join","__dirname","tmpl","extendedConfig","outDir","vitestCoverageV8Version","vitestCoverageIstanbulVersion"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -27,6 +27,7 @@ const _js = require("@nx/js");
27
27
  const _executorutils = require("../utils/executor-utils");
28
28
  const _filehasher = require("nx/src/hasher/file-hasher");
29
29
  const _minimatch = require("minimatch");
30
+ const _tssolutionsetup = require("@nx/js/src/utils/typescript/ts-solution-setup");
30
31
  const pmc = (0, _devkit.getPackageManagerCommand)();
31
32
  function readTargetsCache(cachePath) {
32
33
  return (0, _fs.existsSync)(cachePath) ? (0, _devkit.readJsonFile)(cachePath) : {};
@@ -44,8 +45,9 @@ const createNodesV2 = [
44
45
  const optionsHash = (0, _filehasher.hashObject)(options);
45
46
  const cachePath = (0, _path.join)(_cachedirectory.workspaceDataDirectory, `vite-${optionsHash}.hash`);
46
47
  const targetsCache = readTargetsCache(cachePath);
48
+ const isUsingTsSolutionSetup = (0, _tssolutionsetup.isUsingTsSolutionSetup)();
47
49
  try {
48
- return await (0, _devkit.createNodesFromFiles)((configFile, options, context)=>createNodesInternal(configFile, options, context, targetsCache), configFilePaths, options, context);
50
+ return await (0, _devkit.createNodesFromFiles)((configFile, options, context)=>createNodesInternal(configFile, options, context, targetsCache, isUsingTsSolutionSetup), configFilePaths, options, context);
49
51
  } finally{
50
52
  writeTargetsToCache(cachePath, targetsCache);
51
53
  }
@@ -55,10 +57,10 @@ const createNodes = [
55
57
  viteVitestConfigGlob,
56
58
  async (configFilePath, options, context)=>{
57
59
  _devkit.logger.warn('`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.');
58
- return createNodesInternal(configFilePath, options, context, {});
60
+ return createNodesInternal(configFilePath, options, context, {}, (0, _tssolutionsetup.isUsingTsSolutionSetup)());
59
61
  }
60
62
  ];
61
- async function createNodesInternal(configFilePath, options, context, targetsCache) {
63
+ async function createNodesInternal(configFilePath, options, context, targetsCache, isUsingTsSolutionSetup) {
62
64
  var _targetsCache, _hash;
63
65
  const projectRoot = (0, _path.dirname)(configFilePath);
64
66
  // Do not create a project if package.json and project.json isn't there.
@@ -74,7 +76,7 @@ async function createNodesInternal(configFilePath, options, context, targetsCach
74
76
  const hash = await (0, _calculatehashforcreatenodes.calculateHashForCreateNodes)(projectRoot, normalizedOptions, context, [
75
77
  (0, _js.getLockFileName)((0, _devkit.detectPackageManager)(context.workspaceRoot))
76
78
  ]) + configFilePath;
77
- const _ref = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, tsConfigFiles, context), { isLibrary } = _ref, viteTargets = _object_without_properties_loose._(_ref, [
79
+ const _ref = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, tsConfigFiles, isUsingTsSolutionSetup, context), { isLibrary } = _ref, viteTargets = _object_without_properties_loose._(_ref, [
78
80
  "isLibrary"
79
81
  ]);
80
82
  var _;
@@ -96,7 +98,7 @@ async function createNodesInternal(configFilePath, options, context, targetsCach
96
98
  }
97
99
  };
98
100
  }
99
- async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFiles, context) {
101
+ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFiles, isUsingTsSolutionSetup, context) {
100
102
  var _viteBuildConfig_build;
101
103
  const absoluteConfigFilePath = (0, _devkit.joinPathFragments)(context.workspaceRoot, configFilePath);
102
104
  // Workaround for the `build$3 is not a function` error that we sometimes see in agents.
@@ -150,7 +152,7 @@ async function buildViteTargets(configFilePath, projectRoot, options, tsConfigFi
150
152
  ]
151
153
  }
152
154
  ],
153
- command: `tsc --noEmit -p ${tsConfigToUse}`,
155
+ command: isUsingTsSolutionSetup ? `tsc --build --emitDeclarationOnly --pretty --verbose` : `tsc --noEmit -p ${tsConfigToUse}`,
154
156
  options: {
155
157
  cwd: (0, _devkit.joinPathFragments)(projectRoot)
156
158
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\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 { calculateHashForCreateNodes } 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';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n}\n\ntype ViteTargets = Pick<ProjectConfiguration, 'targets' | 'metadata'>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return existsSync(cachePath) ? readJsonFile(cachePath) : {};\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 cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n try {\n return await createNodesFromFiles(\n (configFile, options, context) =>\n createNodesInternal(configFile, options, context, targetsCache),\n configFilePaths,\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 return createNodesInternal(configFilePath, options, context, {});\n },\n];\n\nasync function createNodesInternal(\n configFilePath: string,\n options: VitePluginOptions,\n context: CreateNodesContext,\n targetsCache: Record<string, ViteTargets>\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 const normalizedOptions = normalizeOptions(options);\n\n // We do not want to alter how the hash is calculated, so appending the config file path to the hash\n // to prevent vite/vitest files overwriting the target cache created by the other\n const hash =\n (await calculateHashForCreateNodes(\n projectRoot,\n normalizedOptions,\n context,\n [getLockFileName(detectPackageManager(context.workspaceRoot))]\n )) + configFilePath;\n\n const { isLibrary, ...viteTargets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n context\n );\n targetsCache[hash] ??= viteTargets;\n\n const { targets, metadata } = targetsCache[hash];\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[options.buildTargetName]) {\n project.projectType = isLibrary ? 'library' : 'application';\n }\n\n return {\n projects: {\n [projectRoot]: project,\n },\n };\n}\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n tsConfigFiles: string[],\n context: CreateNodesContext\n): Promise<ViteTargets & { isLibrary: boolean }> {\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 );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n targets[options.serveTargetName] = serveTarget(projectRoot);\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\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: `tsc --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Run Typechecking`,\n help: {\n command: `${pmc.exec} tsc --help -p ${tsConfigToUse}`,\n example: {\n options: {\n noEmit: true,\n },\n },\n },\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 const metadata = {};\n return { targets, metadata, isLibrary: Boolean(viteBuildConfig.build?.lib) };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\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\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\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 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(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\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.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","pmc","getPackageManagerCommand","readTargetsCache","cachePath","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","join","workspaceDataDirectory","targetsCache","createNodesFromFiles","configFile","createNodesInternal","configFilePath","logger","warn","hash","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","tsConfigFiles","filter","p","minimatch","normalizedOptions","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","isLibrary","viteTargets","targets","metadata","project","root","buildTargetName","projectType","projects","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","name","buildTarget","build","lib","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","length","tsConfigToUse","find","t","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","help","exec","example","noEmit","testTargetName","testTarget","Boolean","outputs","dependsOn","technologies","sourcemap","manifest","targetConfig","port","env","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","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 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 { calculateHashForCreateNodes } 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';\n\nconst pmc = getPackageManagerCommand();\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n typecheckTargetName?: string;\n}\n\ntype ViteTargets = Pick<ProjectConfiguration, 'targets' | 'metadata'>;\n\nfunction readTargetsCache(cachePath: string): Record<string, ViteTargets> {\n return existsSync(cachePath) ? readJsonFile(cachePath) : {};\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 cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);\n const targetsCache = readTargetsCache(cachePath);\n const isUsingTsSolutionSetup = _isUsingTsSolutionSetup();\n try {\n return await createNodesFromFiles(\n (configFile, options, context) =>\n createNodesInternal(\n configFile,\n options,\n context,\n targetsCache,\n isUsingTsSolutionSetup\n ),\n configFilePaths,\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 return createNodesInternal(\n configFilePath,\n options,\n context,\n {},\n _isUsingTsSolutionSetup()\n );\n },\n];\n\nasync function createNodesInternal(\n configFilePath: string,\n options: VitePluginOptions,\n context: CreateNodesContext,\n targetsCache: Record<string, ViteTargets>,\n isUsingTsSolutionSetup: boolean\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 const normalizedOptions = normalizeOptions(options);\n\n // We do not want to alter how the hash is calculated, so appending the config file path to the hash\n // to prevent vite/vitest files overwriting the target cache created by the other\n const hash =\n (await calculateHashForCreateNodes(\n projectRoot,\n normalizedOptions,\n context,\n [getLockFileName(detectPackageManager(context.workspaceRoot))]\n )) + configFilePath;\n\n const { isLibrary, ...viteTargets } = await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n tsConfigFiles,\n isUsingTsSolutionSetup,\n context\n );\n targetsCache[hash] ??= viteTargets;\n\n const { targets, metadata } = targetsCache[hash];\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[options.buildTargetName]) {\n project.projectType = isLibrary ? 'library' : 'application';\n }\n\n return {\n projects: {\n [projectRoot]: project,\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 & { isLibrary: boolean }> {\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 );\n\n // If running in library mode, then there is nothing to serve.\n if (!viteBuildConfig.build?.lib || hasServeConfig) {\n targets[options.serveTargetName] = serveTarget(projectRoot);\n targets[options.previewTargetName] = previewTarget(\n projectRoot,\n options.buildTargetName\n );\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\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 --pretty --verbose`\n : `tsc --noEmit -p ${tsConfigToUse}`,\n options: { cwd: joinPathFragments(projectRoot) },\n metadata: {\n description: `Run Typechecking`,\n help: {\n command: `${pmc.exec} tsc --help -p ${tsConfigToUse}`,\n example: {\n options: {\n noEmit: true,\n },\n },\n },\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 const metadata = {};\n return { targets, metadata, isLibrary: Boolean(viteBuildConfig.build?.lib) };\n}\n\nasync function buildTarget(\n buildTargetName: string,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n projectRoot: string\n) {\n return {\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\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\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 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(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n spa: true,\n },\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.previewTargetName ??= 'preview';\n options.testTargetName ??= 'test';\n options.serveStaticTargetName ??= 'serve-static';\n options.typecheckTargetName ??= 'typecheck';\n return options;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","pmc","getPackageManagerCommand","readTargetsCache","cachePath","existsSync","readJsonFile","writeTargetsToCache","results","writeJsonFile","viteVitestConfigGlob","configFilePaths","options","context","optionsHash","hashObject","join","workspaceDataDirectory","targetsCache","isUsingTsSolutionSetup","_isUsingTsSolutionSetup","createNodesFromFiles","configFile","createNodesInternal","configFilePath","logger","warn","hash","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","tsConfigFiles","filter","p","minimatch","normalizedOptions","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","isLibrary","viteTargets","targets","metadata","project","root","buildTargetName","projectType","projects","viteBuildConfig","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","mode","buildOutputs","testOutputs","hasTest","isBuildable","hasServeConfig","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","name","buildTarget","build","lib","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","length","tsConfigToUse","find","t","typecheckTargetName","cache","inputs","externalDependencies","command","cwd","description","help","exec","example","noEmit","testTargetName","testTarget","Boolean","outputs","dependsOn","technologies","sourcemap","manifest","targetConfig","port","env","bail","coverage","executor","spa","test","server","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","input","reportsDirectoryPath","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}