@nx/vite 19.2.3 → 19.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/generators.json CHANGED
@@ -16,10 +16,15 @@
16
16
  "aliases": ["config"],
17
17
  "hidden": false
18
18
  },
19
+ "setup-paths-plugin": {
20
+ "factory": "./src/generators/setup-paths-plugin/setup-paths-plugin",
21
+ "schema": "./src/generators/setup-paths-plugin/schema.json",
22
+ "description": "Sets up the nxViteTsPaths plugin to enable support for workspace libraries."
23
+ },
19
24
  "vitest": {
20
25
  "factory": "./src/generators/vitest/vitest-generator#vitestGeneratorInternal",
21
26
  "schema": "./src/generators/vitest/schema.json",
22
- "description": "Generate a vitest configuration"
27
+ "description": "Generate a vitest configuration."
23
28
  }
24
29
  }
25
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/vite",
3
- "version": "19.2.3",
3
+ "version": "19.3.0-beta.1",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -30,13 +30,13 @@
30
30
  "migrations": "./migrations.json"
31
31
  },
32
32
  "dependencies": {
33
- "@nx/devkit": "19.2.3",
33
+ "@nx/devkit": "19.3.0-beta.1",
34
34
  "@phenomnomnominal/tsquery": "~5.0.1",
35
35
  "@swc/helpers": "~0.5.0",
36
36
  "enquirer": "~2.3.6",
37
- "@nx/js": "19.2.3",
37
+ "@nx/js": "19.3.0-beta.1",
38
38
  "tsconfig-paths": "^4.1.2",
39
- "@nrwl/vite": "19.2.3"
39
+ "@nrwl/vite": "19.3.0-beta.1"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "vite": "^5.0.0",
package/plugin.d.ts CHANGED
@@ -1 +1 @@
1
- export { createNodes, VitePluginOptions, createDependencies, } from './src/plugins/plugin';
1
+ export { createNodes, createNodesV2, VitePluginOptions, createDependencies, } from './src/plugins/plugin';
package/plugin.js CHANGED
@@ -14,6 +14,9 @@ _export(exports, {
14
14
  },
15
15
  createNodes: function() {
16
16
  return _plugin.createNodes;
17
+ },
18
+ createNodesV2: function() {
19
+ return _plugin.createNodesV2;
17
20
  }
18
21
  });
19
22
  const _plugin = require("./src/plugins/plugin");
package/plugin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/vite/plugin.ts"],"sourcesContent":["export {\n createNodes,\n VitePluginOptions,\n createDependencies,\n} from './src/plugins/plugin';\n"],"names":["VitePluginOptions","createDependencies","createNodes"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAEEA,iBAAiB;eAAjBA,yBAAiB;;IACjBC,kBAAkB;eAAlBA,0BAAkB;;IAFlBC,WAAW;eAAXA,mBAAW;;;wBAGN"}
1
+ {"version":3,"sources":["../../../packages/vite/plugin.ts"],"sourcesContent":["export {\n createNodes,\n createNodesV2,\n VitePluginOptions,\n createDependencies,\n} from './src/plugins/plugin';\n"],"names":["VitePluginOptions","createDependencies","createNodes","createNodesV2"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAGEA,iBAAiB;eAAjBA,yBAAiB;;IACjBC,kBAAkB;eAAlBA,0BAAkB;;IAHlBC,WAAW;eAAXA,mBAAW;;IACXC,aAAa;eAAbA,qBAAa;;;wBAGR"}
@@ -22,6 +22,7 @@ _export(exports, {
22
22
  const _extends = require("@swc/helpers/_/_extends");
23
23
  const _devkit = require("@nx/devkit");
24
24
  const _addplugin = require("@nx/devkit/src/utils/add-plugin");
25
+ const _setuppathsplugin = require("../setup-paths-plugin/setup-paths-plugin");
25
26
  const _plugin = require("../../plugins/plugin");
26
27
  const _utils = require("./lib/utils");
27
28
  function updateNxJsonSettings(tree) {
@@ -90,6 +91,11 @@ async function initGeneratorInternal(tree, schema) {
90
91
  }, schema.updatePackageScripts);
91
92
  }
92
93
  updateNxJsonSettings(tree);
94
+ if (schema.setupPathsPlugin) {
95
+ await (0, _setuppathsplugin.setupPathsPlugin)(tree, {
96
+ skipFormat: true
97
+ });
98
+ }
93
99
  const tasks = [];
94
100
  if (!schema.skipPackageJson) {
95
101
  tasks.push((0, _utils.moveToDevDependencies)(tree));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n formatFiles,\n GeneratorCallback,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateNxJson,\n} from '@nx/devkit';\nimport { addPluginV1 } from '@nx/devkit/src/utils/add-plugin';\n\nimport { createNodes } from '../../plugins/plugin';\nimport { InitGeneratorSchema } from './schema';\nimport { checkDependenciesInstalled, moveToDevDependencies } from './lib/utils';\n\nexport function updateNxJsonSettings(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\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 nxJson.targetDefaults ??= {};\n nxJson.targetDefaults['@nx/vite:test'] ??= {};\n nxJson.targetDefaults['@nx/vite:test'].cache ??= true;\n nxJson.targetDefaults['@nx/vite:test'].inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n }\n\n updateNxJson(tree, nxJson);\n}\n\nexport function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n return initGeneratorInternal(tree, { addPlugin: false, ...schema });\n}\n\nexport async function initGeneratorInternal(\n tree: Tree,\n schema: InitGeneratorSchema\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 if (schema.addPlugin) {\n await addPluginV1(\n tree,\n await createProjectGraphAsync(),\n '@nx/vite/plugin',\n createNodes,\n {\n buildTargetName: ['build', 'vite:build', 'vite-build'],\n testTargetName: ['test', 'vite:test', 'vite-test'],\n serveTargetName: ['serve', 'vite:serve', 'vite-serve'],\n previewTargetName: ['preview', 'vite:preview', 'vite-preview'],\n serveStaticTargetName: [\n 'serve-static',\n 'vite:serve-static',\n 'vite-serve-static',\n ],\n },\n schema.updatePackageScripts\n );\n }\n\n updateNxJsonSettings(tree);\n\n const tasks: GeneratorCallback[] = [];\n if (!schema.skipPackageJson) {\n tasks.push(moveToDevDependencies(tree));\n tasks.push(checkDependenciesInstalled(tree, schema));\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\n"],"names":["initGenerator","initGeneratorInternal","updateNxJsonSettings","tree","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","hasPlugin","plugins","some","p","plugin","targetDefaults","cache","inputs","updateNxJson","schema","addPlugin","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","addPluginV1","createProjectGraphAsync","createNodes","buildTargetName","testTargetName","serveTargetName","previewTargetName","serveStaticTargetName","updatePackageScripts","tasks","skipPackageJson","moveToDevDependencies","checkDependenciesInstalled","skipFormat","formatFiles","runTasksInSerial"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAiGA,OAA6B;eAA7B;;IAlDgBA,aAAa;eAAbA;;IAIMC,qBAAqB;eAArBA;;IApCNC,oBAAoB;eAApBA;;;;wBAPT;2BACqB;wBAEA;uBAEsC;AAE3D,SAASA,qBAAqBC,IAAU;QAGnBC,qBAURA;IAZlB,MAAMA,SAASC,IAAAA,kBAAU,EAACF;IAE1B,MAAMG,qBAAoBF,sBAAAA,OAAOG,WAAW,qBAAlBH,oBAAoBI,UAAU;IACxD,IAAIF,mBAAmB;QACrBA,kBAAkBG,IAAI,CACpB,yDACA;QAGFL,OAAOG,WAAW,CAACC,UAAU,GAAGE,MAAMC,IAAI,CAAC,IAAIC,IAAIN;IACrD;IAEA,MAAMO,aAAYT,kBAAAA,OAAOU,OAAO,qBAAdV,gBAAgBW,IAAI,CAAC,CAACC,IACtC,OAAOA,MAAM,WACTA,MAAM,oBACNA,EAAEC,MAAM,KAAK;IAGnB,IAAI,CAACJ,WAAW;YACdT,SACAA,wBAAsB,aACtBA,mCACAA;;QAHAA,oBAAAA,UAAAA,QAAOc,4CAAPd,QAAOc,iBAAmB,CAAC;;QAC3Bd,MAAAA,yBAAAA,OAAOc,cAAc,CAAA,CAAC,cAAA,gBAAgB,gBAAtCd,sBAAqB,CAAC,YAAgB,GAAK,CAAC;;QAC5CA,WAAAA,oCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACC,0BAAvCf,kCAAuCe,QAAU;;QACjDf,YAAAA,qCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACE,4BAAvChB,mCAAuCgB,SAAW;YAChD;YACAd,oBAAoB,gBAAgB;SACrC;IACH;IAEAe,IAAAA,oBAAY,EAAClB,MAAMC;AACrB;AAEO,SAASJ,cAAcG,IAAU,EAAEmB,MAA2B;IACnE,OAAOrB,sBAAsBE,MAAM;QAAEoB,WAAW;OAAUD;AAC5D;AAEO,eAAerB,sBACpBE,IAAU,EACVmB,MAA2B;QAM3BA;IAJA,MAAMlB,SAASC,IAAAA,kBAAU,EAACF;IAC1B,MAAMqB,mBACJC,QAAQC,GAAG,CAACC,cAAc,KAAK,WAC/BvB,OAAOwB,mBAAmB,KAAK;;IACjCN,eAAAA,UAAAA,QAAOC,kCAAPD,QAAOC,YAAcC;IAErB,IAAIF,OAAOC,SAAS,EAAE;QACpB,MAAMM,IAAAA,sBAAW,EACf1B,MACA,MAAM2B,IAAAA,+BAAuB,KAC7B,mBACAC,mBAAW,EACX;YACEC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,gBAAgB;gBAAC;gBAAQ;gBAAa;aAAY;YAClDC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,mBAAmB;gBAAC;gBAAW;gBAAgB;aAAe;YAC9DC,uBAAuB;gBACrB;gBACA;gBACA;aACD;QACH,GACAd,OAAOe,oBAAoB;IAE/B;IAEAnC,qBAAqBC;IAErB,MAAMmC,QAA6B,EAAE;IACrC,IAAI,CAAChB,OAAOiB,eAAe,EAAE;QAC3BD,MAAM7B,IAAI,CAAC+B,IAAAA,4BAAqB,EAACrC;QACjCmC,MAAM7B,IAAI,CAACgC,IAAAA,iCAA0B,EAACtC,MAAMmB;IAC9C;IAEA,IAAI,CAACA,OAAOoB,UAAU,EAAE;QACtB,MAAMC,IAAAA,mBAAW,EAACxC;IACpB;IAEA,OAAOyC,IAAAA,wBAAgB,KAAIN;AAC7B;MAEA,WAAetC"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/init/init.ts"],"sourcesContent":["import {\n createProjectGraphAsync,\n formatFiles,\n GeneratorCallback,\n readNxJson,\n runTasksInSerial,\n Tree,\n updateNxJson,\n} from '@nx/devkit';\nimport { addPluginV1 } from '@nx/devkit/src/utils/add-plugin';\n\nimport { setupPathsPlugin } from '../setup-paths-plugin/setup-paths-plugin';\nimport { createNodes } from '../../plugins/plugin';\nimport { InitGeneratorSchema } from './schema';\nimport { checkDependenciesInstalled, moveToDevDependencies } from './lib/utils';\n\nexport function updateNxJsonSettings(tree: Tree) {\n const nxJson = readNxJson(tree);\n\n const productionFileSet = nxJson.namedInputs?.production;\n if (productionFileSet) {\n productionFileSet.push(\n '!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)',\n '!{projectRoot}/tsconfig.spec.json'\n );\n\n nxJson.namedInputs.production = Array.from(new Set(productionFileSet));\n }\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 nxJson.targetDefaults ??= {};\n nxJson.targetDefaults['@nx/vite:test'] ??= {};\n nxJson.targetDefaults['@nx/vite:test'].cache ??= true;\n nxJson.targetDefaults['@nx/vite:test'].inputs ??= [\n 'default',\n productionFileSet ? '^production' : '^default',\n ];\n }\n\n updateNxJson(tree, nxJson);\n}\n\nexport function initGenerator(tree: Tree, schema: InitGeneratorSchema) {\n return initGeneratorInternal(tree, { addPlugin: false, ...schema });\n}\n\nexport async function initGeneratorInternal(\n tree: Tree,\n schema: InitGeneratorSchema\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 if (schema.addPlugin) {\n await addPluginV1(\n tree,\n await createProjectGraphAsync(),\n '@nx/vite/plugin',\n createNodes,\n {\n buildTargetName: ['build', 'vite:build', 'vite-build'],\n testTargetName: ['test', 'vite:test', 'vite-test'],\n serveTargetName: ['serve', 'vite:serve', 'vite-serve'],\n previewTargetName: ['preview', 'vite:preview', 'vite-preview'],\n serveStaticTargetName: [\n 'serve-static',\n 'vite:serve-static',\n 'vite-serve-static',\n ],\n },\n schema.updatePackageScripts\n );\n }\n\n updateNxJsonSettings(tree);\n\n if (schema.setupPathsPlugin) {\n await setupPathsPlugin(tree, { skipFormat: true });\n }\n\n const tasks: GeneratorCallback[] = [];\n if (!schema.skipPackageJson) {\n tasks.push(moveToDevDependencies(tree));\n tasks.push(checkDependenciesInstalled(tree, schema));\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return runTasksInSerial(...tasks);\n}\n\nexport default initGenerator;\n"],"names":["initGenerator","initGeneratorInternal","updateNxJsonSettings","tree","nxJson","readNxJson","productionFileSet","namedInputs","production","push","Array","from","Set","hasPlugin","plugins","some","p","plugin","targetDefaults","cache","inputs","updateNxJson","schema","addPlugin","addPluginDefault","process","env","NX_ADD_PLUGINS","useInferencePlugins","addPluginV1","createProjectGraphAsync","createNodes","buildTargetName","testTargetName","serveTargetName","previewTargetName","serveStaticTargetName","updatePackageScripts","setupPathsPlugin","skipFormat","tasks","skipPackageJson","moveToDevDependencies","checkDependenciesInstalled","formatFiles","runTasksInSerial"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;IAsGA,OAA6B;eAA7B;;IAtDgBA,aAAa;eAAbA;;IAIMC,qBAAqB;eAArBA;;IApCNC,oBAAoB;eAApBA;;;;wBART;2BACqB;kCAEK;wBACL;uBAEsC;AAE3D,SAASA,qBAAqBC,IAAU;QAGnBC,qBAURA;IAZlB,MAAMA,SAASC,IAAAA,kBAAU,EAACF;IAE1B,MAAMG,qBAAoBF,sBAAAA,OAAOG,WAAW,qBAAlBH,oBAAoBI,UAAU;IACxD,IAAIF,mBAAmB;QACrBA,kBAAkBG,IAAI,CACpB,yDACA;QAGFL,OAAOG,WAAW,CAACC,UAAU,GAAGE,MAAMC,IAAI,CAAC,IAAIC,IAAIN;IACrD;IAEA,MAAMO,aAAYT,kBAAAA,OAAOU,OAAO,qBAAdV,gBAAgBW,IAAI,CAAC,CAACC,IACtC,OAAOA,MAAM,WACTA,MAAM,oBACNA,EAAEC,MAAM,KAAK;IAGnB,IAAI,CAACJ,WAAW;YACdT,SACAA,wBAAsB,aACtBA,mCACAA;;QAHAA,oBAAAA,UAAAA,QAAOc,4CAAPd,QAAOc,iBAAmB,CAAC;;QAC3Bd,MAAAA,yBAAAA,OAAOc,cAAc,CAAA,CAAC,cAAA,gBAAgB,gBAAtCd,sBAAqB,CAAC,YAAgB,GAAK,CAAC;;QAC5CA,WAAAA,oCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACC,0BAAvCf,kCAAuCe,QAAU;;QACjDf,YAAAA,qCAAAA,OAAOc,cAAc,CAAC,gBAAgB,EAACE,4BAAvChB,mCAAuCgB,SAAW;YAChD;YACAd,oBAAoB,gBAAgB;SACrC;IACH;IAEAe,IAAAA,oBAAY,EAAClB,MAAMC;AACrB;AAEO,SAASJ,cAAcG,IAAU,EAAEmB,MAA2B;IACnE,OAAOrB,sBAAsBE,MAAM;QAAEoB,WAAW;OAAUD;AAC5D;AAEO,eAAerB,sBACpBE,IAAU,EACVmB,MAA2B;QAM3BA;IAJA,MAAMlB,SAASC,IAAAA,kBAAU,EAACF;IAC1B,MAAMqB,mBACJC,QAAQC,GAAG,CAACC,cAAc,KAAK,WAC/BvB,OAAOwB,mBAAmB,KAAK;;IACjCN,eAAAA,UAAAA,QAAOC,kCAAPD,QAAOC,YAAcC;IAErB,IAAIF,OAAOC,SAAS,EAAE;QACpB,MAAMM,IAAAA,sBAAW,EACf1B,MACA,MAAM2B,IAAAA,+BAAuB,KAC7B,mBACAC,mBAAW,EACX;YACEC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,gBAAgB;gBAAC;gBAAQ;gBAAa;aAAY;YAClDC,iBAAiB;gBAAC;gBAAS;gBAAc;aAAa;YACtDC,mBAAmB;gBAAC;gBAAW;gBAAgB;aAAe;YAC9DC,uBAAuB;gBACrB;gBACA;gBACA;aACD;QACH,GACAd,OAAOe,oBAAoB;IAE/B;IAEAnC,qBAAqBC;IAErB,IAAImB,OAAOgB,gBAAgB,EAAE;QAC3B,MAAMA,IAAAA,kCAAgB,EAACnC,MAAM;YAAEoC,YAAY;QAAK;IAClD;IAEA,MAAMC,QAA6B,EAAE;IACrC,IAAI,CAAClB,OAAOmB,eAAe,EAAE;QAC3BD,MAAM/B,IAAI,CAACiC,IAAAA,4BAAqB,EAACvC;QACjCqC,MAAM/B,IAAI,CAACkC,IAAAA,iCAA0B,EAACxC,MAAMmB;IAC9C;IAEA,IAAI,CAACA,OAAOiB,UAAU,EAAE;QACtB,MAAMK,IAAAA,mBAAW,EAACzC;IACpB;IAEA,OAAO0C,IAAAA,wBAAgB,KAAIL;AAC7B;MAEA,WAAexC"}
@@ -1,5 +1,6 @@
1
1
  export interface InitGeneratorSchema {
2
2
  skipFormat?: boolean;
3
+ setupPathsPlugin?: boolean;
3
4
  skipPackageJson?: boolean;
4
5
  keepExistingVersions?: boolean;
5
6
  updatePackageScripts?: boolean;
@@ -15,6 +15,11 @@
15
15
  "type": "boolean",
16
16
  "default": false
17
17
  },
18
+ "setupPathsPlugin": {
19
+ "type": "boolean",
20
+ "description": "Updates vite config files to enable support for workspace libraries via the nxViteTsPaths plugin.",
21
+ "default": false
22
+ },
18
23
  "keepExistingVersions": {
19
24
  "type": "boolean",
20
25
  "x-priority": "internal",
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/vite/src/generators/setup-paths-plugin/lib/utils.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=schema.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/setup-paths-plugin/schema.d.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface InitGeneratorSchema {
2
+ skipFormat?: boolean;
3
+ addTsPathsPlugin?: boolean;
4
+ skipPackageJson?: boolean;
5
+ keepExistingVersions?: boolean;
6
+ updatePackageScripts?: boolean;
7
+ addPlugin?: boolean;
8
+ vitestOnly?: boolean;
9
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "cli": "nx",
3
+ "title": "Sets up the nxViteTsPaths plugin.",
4
+ "description": "Updates vite config files to enable support for workspace libraries via the nxViteTsPaths plugin.",
5
+ "$id": "setup-paths-plugin-vite-plugin",
6
+ "type": "object",
7
+ "properties": {
8
+ "skipFormat": {
9
+ "description": "Skip formatting files.",
10
+ "type": "boolean",
11
+ "default": false
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function setupPathsPlugin(tree: Tree, schema: {
3
+ skipFormat?: boolean;
4
+ }): Promise<void>;
5
+ export default setupPathsPlugin;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ function _export(target, all) {
3
+ for(var name in all)Object.defineProperty(target, name, {
4
+ enumerable: true,
5
+ get: all[name]
6
+ });
7
+ }
8
+ _export(exports, {
9
+ default: function() {
10
+ return _default;
11
+ },
12
+ setupPathsPlugin: function() {
13
+ return setupPathsPlugin;
14
+ }
15
+ });
16
+ const _devkit = require("@nx/devkit");
17
+ async function setupPathsPlugin(tree, schema) {
18
+ const files = await (0, _devkit.globAsync)(tree, [
19
+ '**/vite.config.{js,ts,mjs,mts,cjs,cts}'
20
+ ]);
21
+ for (const file of files){
22
+ ensureImportExists(tree, file);
23
+ ensurePluginAdded(tree, file);
24
+ }
25
+ if (!schema.skipFormat) {
26
+ await (0, _devkit.formatFiles)(tree);
27
+ }
28
+ }
29
+ function ensureImportExists(tree, file) {
30
+ const { tsquery } = require('@phenomnomnominal/tsquery');
31
+ let content = tree.read(file, 'utf-8');
32
+ const ast = tsquery.ast(content);
33
+ const allImports = tsquery.query(ast, 'ImportDeclaration');
34
+ if (allImports.length) {
35
+ const lastImport = allImports[allImports.length - 1];
36
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
37
+ {
38
+ type: _devkit.ChangeType.Insert,
39
+ index: lastImport.end + 1,
40
+ text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n`
41
+ }
42
+ ]));
43
+ } else {
44
+ if (file.endsWith('.cts') || file.endsWith('.cjs')) {
45
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
46
+ {
47
+ type: _devkit.ChangeType.Insert,
48
+ index: 0,
49
+ text: `const { nxViteTsPaths } = require('@nx/vite/plugins/nx-tsconfig-paths.plugin');\n`
50
+ }
51
+ ]));
52
+ } else {
53
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
54
+ {
55
+ type: _devkit.ChangeType.Insert,
56
+ index: 0,
57
+ text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\n`
58
+ }
59
+ ]));
60
+ }
61
+ }
62
+ }
63
+ function ensurePluginAdded(tree, file) {
64
+ const { tsquery } = require('@phenomnomnominal/tsquery');
65
+ const content = tree.read(file, 'utf-8');
66
+ const ast = tsquery.ast(content);
67
+ const foundDefineConfig = tsquery.query(ast, 'CallExpression:has(Identifier[name="defineConfig"])');
68
+ if (!foundDefineConfig.length) return content;
69
+ // Do not update defineConfig if it has an arrow function since it can be tricky and error-prone.
70
+ const defineUsingArrowFunction = tsquery.query(foundDefineConfig[0], 'ArrowFunction');
71
+ if (defineUsingArrowFunction.length) return content;
72
+ const propertyAssignments = tsquery.query(foundDefineConfig[0], 'PropertyAssignment');
73
+ if (propertyAssignments.length) {
74
+ const pluginsNode = tsquery.query(foundDefineConfig[0], 'PropertyAssignment:has(Identifier[name="plugins"])');
75
+ if (pluginsNode.length) {
76
+ const updated = tsquery.replace(content, 'PropertyAssignment:has(Identifier[name="plugins"])', (node)=>{
77
+ const found = tsquery.query(node, 'ArrayLiteralExpression');
78
+ let updatedPluginsString = '';
79
+ var _found__elements;
80
+ const existingPluginNodes = (_found__elements = found == null ? void 0 : found[0].elements) != null ? _found__elements : [];
81
+ for (const plugin of existingPluginNodes){
82
+ updatedPluginsString += `${plugin.getText()},`;
83
+ }
84
+ if (!(existingPluginNodes == null ? void 0 : existingPluginNodes.some((node)=>node.getText().includes('nxViteTsPaths')))) {
85
+ updatedPluginsString += ` nxViteTsPaths(),`;
86
+ }
87
+ return `plugins: [${updatedPluginsString}]`;
88
+ });
89
+ tree.write(file, updated);
90
+ } else {
91
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
92
+ {
93
+ type: _devkit.ChangeType.Insert,
94
+ index: propertyAssignments[0].getStart(),
95
+ text: `plugins: [nxViteTsPaths()],
96
+ `
97
+ }
98
+ ]));
99
+ }
100
+ } else {
101
+ tree.write(file, (0, _devkit.applyChangesToString)(content, [
102
+ {
103
+ type: _devkit.ChangeType.Insert,
104
+ index: foundDefineConfig[0].getStart() + 14,
105
+ text: `plugins: [nxViteTsPaths()],`
106
+ }
107
+ ]));
108
+ }
109
+ }
110
+ const _default = setupPathsPlugin;
111
+
112
+ //# sourceMappingURL=setup-paths-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/generators/setup-paths-plugin/setup-paths-plugin.ts"],"sourcesContent":["import {\n applyChangesToString,\n ChangeType,\n formatFiles,\n globAsync,\n Tree,\n} from '@nx/devkit';\nimport type { ArrayLiteralExpression, Node } from 'typescript';\n\nexport async function setupPathsPlugin(\n tree: Tree,\n schema: { skipFormat?: boolean }\n) {\n const files = await globAsync(tree, [\n '**/vite.config.{js,ts,mjs,mts,cjs,cts}',\n ]);\n\n for (const file of files) {\n ensureImportExists(tree, file);\n ensurePluginAdded(tree, file);\n }\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n}\n\nfunction ensureImportExists(tree, file) {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n let content = tree.read(file, 'utf-8');\n const ast = tsquery.ast(content);\n const allImports = tsquery.query(ast, 'ImportDeclaration');\n if (allImports.length) {\n const lastImport = allImports[allImports.length - 1];\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: lastImport.end + 1,\n text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\\n`,\n },\n ])\n );\n } else {\n if (file.endsWith('.cts') || file.endsWith('.cjs')) {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: 0,\n text: `const { nxViteTsPaths } = require('@nx/vite/plugins/nx-tsconfig-paths.plugin');\\n`,\n },\n ])\n );\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: 0,\n text: `import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';\\n`,\n },\n ])\n );\n }\n }\n}\n\nfunction ensurePluginAdded(tree, file) {\n const { tsquery } = require('@phenomnomnominal/tsquery');\n const content = tree.read(file, 'utf-8');\n const ast = tsquery.ast(content);\n const foundDefineConfig = tsquery.query(\n ast,\n 'CallExpression:has(Identifier[name=\"defineConfig\"])'\n );\n if (!foundDefineConfig.length) return content;\n\n // Do not update defineConfig if it has an arrow function since it can be tricky and error-prone.\n const defineUsingArrowFunction = tsquery.query(\n foundDefineConfig[0],\n 'ArrowFunction'\n );\n if (defineUsingArrowFunction.length) return content;\n\n const propertyAssignments = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment'\n );\n\n if (propertyAssignments.length) {\n const pluginsNode = tsquery.query(\n foundDefineConfig[0],\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])'\n );\n\n if (pluginsNode.length) {\n const updated = tsquery.replace(\n content,\n 'PropertyAssignment:has(Identifier[name=\"plugins\"])',\n (node: Node) => {\n const found = tsquery.query(\n node,\n 'ArrayLiteralExpression'\n ) as ArrayLiteralExpression[];\n let updatedPluginsString = '';\n\n const existingPluginNodes = found?.[0].elements ?? [];\n\n for (const plugin of existingPluginNodes) {\n updatedPluginsString += `${plugin.getText()},`;\n }\n\n if (\n !existingPluginNodes?.some((node: Node) =>\n node.getText().includes('nxViteTsPaths')\n )\n ) {\n updatedPluginsString += ` nxViteTsPaths(),`;\n }\n\n return `plugins: [${updatedPluginsString}]`;\n }\n );\n tree.write(file, updated);\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: propertyAssignments[0].getStart(),\n text: `plugins: [nxViteTsPaths()],\n `,\n },\n ])\n );\n }\n } else {\n tree.write(\n file,\n applyChangesToString(content, [\n {\n type: ChangeType.Insert,\n index: foundDefineConfig[0].getStart() + 14, // length of \"defineConfig(\" + 1\n text: `plugins: [nxViteTsPaths()],`,\n },\n ])\n );\n }\n}\n\nexport default setupPathsPlugin;\n"],"names":["setupPathsPlugin","tree","schema","files","globAsync","file","ensureImportExists","ensurePluginAdded","skipFormat","formatFiles","tsquery","require","content","read","ast","allImports","query","length","lastImport","write","applyChangesToString","type","ChangeType","Insert","index","end","text","endsWith","foundDefineConfig","defineUsingArrowFunction","propertyAssignments","pluginsNode","updated","replace","node","found","updatedPluginsString","existingPluginNodes","elements","plugin","getText","some","includes","getStart"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CreateDependencies, CreateNodes } from '@nx/devkit';
1
+ import { CreateDependencies, CreateNodes, CreateNodesV2 } from '@nx/devkit';
2
2
  export interface VitePluginOptions {
3
3
  buildTargetName?: string;
4
4
  testTargetName?: string;
@@ -6,5 +6,9 @@ export interface VitePluginOptions {
6
6
  previewTargetName?: string;
7
7
  serveStaticTargetName?: string;
8
8
  }
9
+ /**
10
+ * @deprecated The 'createDependencies' function is now a no-op. This functionality is included in 'createNodesV2'.
11
+ */
9
12
  export declare const createDependencies: CreateDependencies;
13
+ export declare const createNodesV2: CreateNodesV2<VitePluginOptions>;
10
14
  export declare const createNodes: CreateNodes<VitePluginOptions>;
@@ -11,9 +11,11 @@ _export(exports, {
11
11
  },
12
12
  createNodes: function() {
13
13
  return createNodes;
14
+ },
15
+ createNodesV2: function() {
16
+ return createNodesV2;
14
17
  }
15
18
  });
16
- const _extends = require("@swc/helpers/_/_extends");
17
19
  const _devkit = require("@nx/devkit");
18
20
  const _path = require("path");
19
21
  const _getnamedinputs = require("@nx/devkit/src/utils/get-named-inputs");
@@ -22,47 +24,64 @@ const _calculatehashforcreatenodes = require("@nx/devkit/src/utils/calculate-has
22
24
  const _cachedirectory = require("nx/src/utils/cache-directory");
23
25
  const _js = require("@nx/js");
24
26
  const _executorutils = require("../utils/executor-utils");
25
- const cachePath = (0, _path.join)(_cachedirectory.workspaceDataDirectory, 'vite.hash');
26
- const targetsCache = readTargetsCache();
27
- function readTargetsCache() {
27
+ const _filehasher = require("nx/src/hasher/file-hasher");
28
+ function readTargetsCache(cachePath) {
28
29
  return (0, _fs.existsSync)(cachePath) ? (0, _devkit.readJsonFile)(cachePath) : {};
29
30
  }
30
- function writeTargetsToCache() {
31
- const oldCache = readTargetsCache();
32
- (0, _devkit.writeJsonFile)(cachePath, _extends._({}, oldCache, targetsCache));
31
+ function writeTargetsToCache(cachePath, results) {
32
+ (0, _devkit.writeJsonFile)(cachePath, results);
33
33
  }
34
34
  const createDependencies = ()=>{
35
- writeTargetsToCache();
36
35
  return [];
37
36
  };
37
+ const viteVitestConfigGlob = '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}';
38
+ const createNodesV2 = [
39
+ viteVitestConfigGlob,
40
+ async (configFilePaths, options, context)=>{
41
+ const optionsHash = (0, _filehasher.hashObject)(options);
42
+ const cachePath = (0, _path.join)(_cachedirectory.workspaceDataDirectory, `vite-${optionsHash}.hash`);
43
+ const targetsCache = readTargetsCache(cachePath);
44
+ try {
45
+ return await (0, _devkit.createNodesFromFiles)((configFile, options, context)=>createNodesInternal(configFile, options, context, targetsCache), configFilePaths, options, context);
46
+ } finally{
47
+ writeTargetsToCache(cachePath, targetsCache);
48
+ }
49
+ }
50
+ ];
38
51
  const createNodes = [
39
- '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',
52
+ viteVitestConfigGlob,
40
53
  async (configFilePath, options, context)=>{
41
- var _targetsCache, _hash;
42
- const projectRoot = (0, _path.dirname)(configFilePath);
43
- // Do not create a project if package.json and project.json isn't there.
44
- const siblingFiles = (0, _fs.readdirSync)((0, _path.join)(context.workspaceRoot, projectRoot));
45
- if (!siblingFiles.includes('package.json') && !siblingFiles.includes('project.json')) {
46
- return {};
47
- }
48
- options = normalizeOptions(options);
49
- // We do not want to alter how the hash is calculated, so appending the config file path to the hash
50
- // to prevent vite/vitest files overwriting the target cache created by the other
51
- const hash = await (0, _calculatehashforcreatenodes.calculateHashForCreateNodes)(projectRoot, options, context, [
52
- (0, _js.getLockFileName)((0, _devkit.detectPackageManager)(context.workspaceRoot))
53
- ]) + configFilePath;
54
- var _;
55
- (_ = (_targetsCache = targetsCache)[_hash = hash]) != null ? _ : _targetsCache[_hash] = await buildViteTargets(configFilePath, projectRoot, options, context);
56
- return {
57
- projects: {
58
- [projectRoot]: {
59
- root: projectRoot,
60
- targets: targetsCache[hash]
61
- }
62
- }
63
- };
54
+ _devkit.logger.warn('`createNodes` is deprecated. Update your plugin to utilize createNodesV2 instead. In Nx 20, this will change to the createNodesV2 API.');
55
+ return createNodesInternal(configFilePath, options, context, {});
64
56
  }
65
57
  ];
58
+ async function createNodesInternal(configFilePath, options, context, targetsCache) {
59
+ var _targetsCache, _hash;
60
+ const projectRoot = (0, _path.dirname)(configFilePath);
61
+ // Do not create a project if package.json and project.json isn't there.
62
+ const siblingFiles = (0, _fs.readdirSync)((0, _path.join)(context.workspaceRoot, projectRoot));
63
+ if (!siblingFiles.includes('package.json') && !siblingFiles.includes('project.json')) {
64
+ return {};
65
+ }
66
+ const normalizedOptions = normalizeOptions(options);
67
+ // We do not want to alter how the hash is calculated, so appending the config file path to the hash
68
+ // to prevent vite/vitest files overwriting the target cache created by the other
69
+ const hash = await (0, _calculatehashforcreatenodes.calculateHashForCreateNodes)(projectRoot, normalizedOptions, context, [
70
+ (0, _js.getLockFileName)((0, _devkit.detectPackageManager)(context.workspaceRoot))
71
+ ]) + configFilePath;
72
+ var _;
73
+ (_ = (_targetsCache = targetsCache)[_hash = hash]) != null ? _ : _targetsCache[_hash] = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, context);
74
+ const { targets, metadata } = targetsCache[hash];
75
+ return {
76
+ projects: {
77
+ [projectRoot]: {
78
+ root: projectRoot,
79
+ targets,
80
+ metadata
81
+ }
82
+ }
83
+ };
84
+ }
66
85
  async function buildViteTargets(configFilePath, projectRoot, options, context) {
67
86
  const absoluteConfigFilePath = (0, _devkit.joinPathFragments)(context.workspaceRoot, configFilePath);
68
87
  // Workaround for the `build$3 is not a function` error that we sometimes see in agents.
@@ -93,7 +112,11 @@ async function buildViteTargets(configFilePath, projectRoot, options, context) {
93
112
  if (configFilePath.includes('vitest.config') || hasTest) {
94
113
  targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
95
114
  }
96
- return targets;
115
+ const metadata = {};
116
+ return {
117
+ targets,
118
+ metadata
119
+ };
97
120
  }
98
121
  async function buildTarget(buildTargetName, namedInputs, outputs, projectRoot) {
99
122
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n detectPackageManager,\n joinPathFragments,\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';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(workspaceDataDirectory, 'vite.hash');\nconst targetsCache = readTargetsCache();\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return existsSync(cachePath) ? readJsonFile(cachePath) : {};\n}\n\nfunction writeTargetsToCache() {\n const oldCache = readTargetsCache();\n writeJsonFile(cachePath, {\n ...oldCache,\n ...targetsCache,\n });\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache();\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/{vite,vitest}.config.{js,ts,mjs,mts,cjs,cts}',\n async (configFilePath, options, context) => {\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 options = 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(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ])) + configFilePath;\n\n targetsCache[hash] ??= await buildViteTargets(\n configFilePath,\n projectRoot,\n options,\n context\n );\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets: targetsCache[hash],\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\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 viteConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable } = getOutputs(\n viteConfig,\n projectRoot,\n context.workspaceRoot\n );\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 viteConfig.plugins && viteConfig.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 targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\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 return targets;\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 };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\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 };\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 viteConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n} {\n const { build, test } = viteConfig;\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?.inputs ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\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 };\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 return options;\n}\n"],"names":["createDependencies","createNodes","cachePath","join","workspaceDataDirectory","targetsCache","readTargetsCache","existsSync","readJsonFile","writeTargetsToCache","oldCache","writeJsonFile","configFilePath","options","context","hash","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","targets","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","viteConfig","configFile","mode","buildOutputs","testOutputs","hasTest","isBuildable","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","p","name","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","command","cwd","cache","dependsOn","inputs","externalDependencies","targetConfig","env","executor","spa","build","test","buildOutputPath","normalizeOutputPath","outDir","lib","rollupOptions","reportsDirectoryPath","coverage","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 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';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\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 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 targetsCache[hash] ??= await buildViteTargets(\n configFilePath,\n projectRoot,\n normalizedOptions,\n context\n );\n\n const { targets, metadata } = targetsCache[hash];\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n metadata,\n },\n },\n };\n}\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\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 viteConfig = await resolveConfig(\n {\n configFile: absoluteConfigFilePath,\n mode: 'development',\n },\n 'build'\n );\n\n const { buildOutputs, testOutputs, hasTest, isBuildable } = getOutputs(\n viteConfig,\n projectRoot,\n context.workspaceRoot\n );\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 viteConfig.plugins && viteConfig.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 targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\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 };\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 };\n}\n\nfunction serveTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite serve`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n return targetConfig;\n}\n\nfunction previewTarget(projectRoot: string) {\n const targetConfig: TargetConfiguration = {\n command: `vite preview`,\n options: {\n cwd: joinPathFragments(projectRoot),\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 };\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 viteConfig: Record<string, any> | undefined,\n projectRoot: string,\n workspaceRoot: string\n): {\n buildOutputs: string[];\n testOutputs: string[];\n hasTest: boolean;\n isBuildable: boolean;\n} {\n const { build, test } = viteConfig;\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?.inputs ||\n existsSync(join(workspaceRoot, projectRoot, 'index.html'));\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 };\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 return options;\n}\n"],"names":["createDependencies","createNodes","createNodesV2","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","normalizedOptions","normalizeOptions","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","targets","metadata","projects","root","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","viteConfig","mode","buildOutputs","testOutputs","hasTest","isBuildable","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","p","name","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","command","cwd","cache","dependsOn","inputs","externalDependencies","targetConfig","env","executor","spa","build","test","buildOutputPath","normalizeOutputPath","outDir","lib","rollupOptions","reportsDirectoryPath","coverage","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}