@nx/vite 17.2.0-beta.12 → 17.2.0-beta.15
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": "17.2.0-beta.
|
|
3
|
+
"version": "17.2.0-beta.15",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Plugin for building and testing applications using Vite",
|
|
6
6
|
"repository": {
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"migrations": "./migrations.json"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@nx/devkit": "17.2.0-beta.
|
|
32
|
+
"@nx/devkit": "17.2.0-beta.15",
|
|
33
33
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
34
34
|
"@swc/helpers": "~0.5.0",
|
|
35
35
|
"enquirer": "~2.3.6",
|
|
36
|
-
"@nx/js": "17.2.0-beta.
|
|
36
|
+
"@nx/js": "17.2.0-beta.15",
|
|
37
37
|
"tsconfig-paths": "^4.1.2",
|
|
38
|
-
"@nrwl/vite": "17.2.0-beta.
|
|
38
|
+
"@nrwl/vite": "17.2.0-beta.15"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"vite": "^5.0.0",
|
package/src/plugins/plugin.js
CHANGED
|
@@ -15,7 +15,6 @@ _export(exports, {
|
|
|
15
15
|
});
|
|
16
16
|
const _devkit = require("@nx/devkit");
|
|
17
17
|
const _path = require("path");
|
|
18
|
-
const _projectconfigurationutils = require("nx/src/project-graph/utils/project-configuration-utils");
|
|
19
18
|
const _getnamedinputs = require("@nx/devkit/src/utils/get-named-inputs");
|
|
20
19
|
const _vite = require("vite");
|
|
21
20
|
const _fs = require("fs");
|
|
@@ -68,29 +67,21 @@ async function buildViteTargets(configFilePath, projectRoot, options, context) {
|
|
|
68
67
|
const { buildOutputs, testOutputs } = getOutputs(projectRoot, viteConfig == null ? void 0 : viteConfig.config);
|
|
69
68
|
const namedInputs = (0, _getnamedinputs.getNamedInputs)(projectRoot, context);
|
|
70
69
|
const targets = {};
|
|
71
|
-
targets[options.buildTargetName] = await buildTarget(
|
|
70
|
+
targets[options.buildTargetName] = await buildTarget(namedInputs, buildOutputs, projectRoot);
|
|
72
71
|
targets[options.serveTargetName] = serveTarget(projectRoot);
|
|
73
72
|
targets[options.previewTargetName] = previewTarget(projectRoot);
|
|
74
|
-
targets[options.testTargetName] = await testTarget(
|
|
73
|
+
targets[options.testTargetName] = await testTarget(namedInputs, testOutputs, projectRoot);
|
|
75
74
|
targets[options.serveStaticTargetName] = serveStaticTarget(options);
|
|
76
75
|
return targets;
|
|
77
76
|
}
|
|
78
|
-
async function buildTarget(
|
|
79
|
-
|
|
80
|
-
const targetConfig = {
|
|
77
|
+
async function buildTarget(namedInputs, outputs, projectRoot) {
|
|
78
|
+
return {
|
|
81
79
|
command: `vite build`,
|
|
82
80
|
options: {
|
|
83
81
|
cwd: (0, _devkit.joinPathFragments)(projectRoot)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
targetConfig.outputs = outputs;
|
|
88
|
-
}
|
|
89
|
-
if ((targetDefaults == null ? void 0 : targetDefaults.cache) === undefined) {
|
|
90
|
-
targetConfig.cache = true;
|
|
91
|
-
}
|
|
92
|
-
if ((targetDefaults == null ? void 0 : targetDefaults.inputs) === undefined) {
|
|
93
|
-
targetConfig.inputs = [
|
|
82
|
+
},
|
|
83
|
+
cache: true,
|
|
84
|
+
inputs: [
|
|
94
85
|
...'production' in namedInputs ? [
|
|
95
86
|
'production',
|
|
96
87
|
'^production'
|
|
@@ -103,9 +94,9 @@ async function buildTarget(context, namedInputs, outputs, options, projectRoot)
|
|
|
103
94
|
'vite'
|
|
104
95
|
]
|
|
105
96
|
}
|
|
106
|
-
]
|
|
107
|
-
|
|
108
|
-
|
|
97
|
+
],
|
|
98
|
+
outputs
|
|
99
|
+
};
|
|
109
100
|
}
|
|
110
101
|
function serveTarget(projectRoot) {
|
|
111
102
|
const targetConfig = {
|
|
@@ -125,22 +116,14 @@ function previewTarget(projectRoot) {
|
|
|
125
116
|
};
|
|
126
117
|
return targetConfig;
|
|
127
118
|
}
|
|
128
|
-
async function testTarget(
|
|
129
|
-
|
|
130
|
-
const targetConfig = {
|
|
119
|
+
async function testTarget(namedInputs, outputs, projectRoot) {
|
|
120
|
+
return {
|
|
131
121
|
command: `vitest run`,
|
|
132
122
|
options: {
|
|
133
123
|
cwd: (0, _devkit.joinPathFragments)(projectRoot)
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
targetConfig.outputs = outputs;
|
|
138
|
-
}
|
|
139
|
-
if ((targetDefaults == null ? void 0 : targetDefaults.cache) === undefined) {
|
|
140
|
-
targetConfig.cache = true;
|
|
141
|
-
}
|
|
142
|
-
if ((targetDefaults == null ? void 0 : targetDefaults.inputs) === undefined) {
|
|
143
|
-
targetConfig.inputs = [
|
|
124
|
+
},
|
|
125
|
+
cache: true,
|
|
126
|
+
inputs: [
|
|
144
127
|
...'production' in namedInputs ? [
|
|
145
128
|
'production',
|
|
146
129
|
'^production'
|
|
@@ -153,9 +136,9 @@ async function testTarget(context, namedInputs, outputs, options, projectRoot) {
|
|
|
153
136
|
'vitest'
|
|
154
137
|
]
|
|
155
138
|
}
|
|
156
|
-
]
|
|
157
|
-
|
|
158
|
-
|
|
139
|
+
],
|
|
140
|
+
outputs
|
|
141
|
+
};
|
|
159
142
|
}
|
|
160
143
|
function serveStaticTarget(options) {
|
|
161
144
|
const targetConfig = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/plugins/plugin.ts"],"sourcesContent":["import {\n CreateDependencies,\n CreateNodes,\n CreateNodesContext,\n TargetConfiguration,\n detectPackageManager,\n joinPathFragments,\n readJsonFile,\n workspaceRoot,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative, resolve } from 'path';\n\nimport { readTargetDefaultsForTarget } from 'nx/src/project-graph/utils/project-configuration-utils';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { UserConfig, loadConfigFromFile } from 'vite';\nimport { existsSync, readdirSync } from 'fs';\nimport { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { projectGraphCacheDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(projectGraphCacheDirectory, 'vite.hash');\nconst targetsCache = existsSync(cachePath) ? readTargetsCache() : {};\n\nconst calculatedTargets: Record<\n string,\n Record<string, TargetConfiguration>\n> = {};\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return readJsonFile(cachePath);\n}\n\nfunction writeTargetsToCache(\n targets: Record<string, Record<string, TargetConfiguration>>\n) {\n writeJsonFile(cachePath, targets);\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache(calculatedTargets);\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/vite.config.{js,ts}',\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 const hash = calculateHashForCreateNodes(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ]);\n const targets = targetsCache[hash]\n ? targetsCache[hash]\n : await buildViteTargets(configFilePath, projectRoot, options, context);\n\n calculatedTargets[hash] = targets;\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const viteConfig = await loadConfigFromFile(\n {\n command: 'build',\n mode: 'production',\n },\n configFilePath\n );\n\n const { buildOutputs, testOutputs } = getOutputs(\n projectRoot,\n viteConfig?.config\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n targets[options.buildTargetName] = await buildTarget(\n context,\n namedInputs,\n buildOutputs,\n options,\n projectRoot\n );\n\n targets[options.serveTargetName] = serveTarget(projectRoot);\n\n targets[options.previewTargetName] = previewTarget(projectRoot);\n\n targets[options.testTargetName] = await testTarget(\n context,\n namedInputs,\n testOutputs,\n options,\n projectRoot\n );\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n\n return targets;\n}\n\nasync function buildTarget(\n context: CreateNodesContext,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n options: VitePluginOptions,\n projectRoot: string\n) {\n const targetDefaults = readTargetDefaultsForTarget(\n options.buildTargetName,\n context.nxJsonConfiguration.targetDefaults\n );\n\n const targetConfig: TargetConfiguration = {\n command: `vite build`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n if (targetDefaults?.outputs === undefined) {\n targetConfig.outputs = outputs;\n }\n\n if (targetDefaults?.cache === undefined) {\n targetConfig.cache = true;\n }\n\n if (targetDefaults?.inputs === undefined) {\n targetConfig.inputs = [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vite'],\n },\n ];\n }\n\n return targetConfig;\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 context: CreateNodesContext,\n namedInputs: {\n [inputName: string]: any[];\n },\n outputs: string[],\n options: VitePluginOptions,\n projectRoot: string\n) {\n const targetDefaults = readTargetDefaultsForTarget(\n options.testTargetName,\n context.nxJsonConfiguration.targetDefaults\n );\n\n const targetConfig: TargetConfiguration = {\n command: `vitest run`,\n options: {\n cwd: joinPathFragments(projectRoot),\n },\n };\n\n if (targetDefaults?.outputs === undefined) {\n targetConfig.outputs = outputs;\n }\n\n if (targetDefaults?.cache === undefined) {\n targetConfig.cache = true;\n }\n\n if (targetDefaults?.inputs === undefined) {\n targetConfig.inputs = [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\n ];\n }\n return targetConfig;\n}\n\nfunction serveStaticTarget(options: VitePluginOptions) {\n const targetConfig: TargetConfiguration = {\n executor: '@nx/web:file-server',\n options: {\n buildTarget: `${options.buildTargetName}`,\n },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n projectRoot: string,\n viteConfig: UserConfig\n): {\n buildOutputs: string[];\n testOutputs: string[];\n} {\n const { build, test } = viteConfig;\n const buildOutputs = ['{options.outputPath}'];\n const testOutputs = ['{options.reportsDirectory}'];\n\n function getOutput(path: string, projectRoot: string): string {\n if (path.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, path));\n } else if (isAbsolute(resolve(path))) {\n return `{workspaceRoot}/${relative(workspaceRoot, path)}`;\n } else {\n return join('{projectRoot}', path);\n }\n }\n\n if (build?.outDir) {\n buildOutputs.push(getOutput(build.outDir, projectRoot));\n }\n\n if (test?.coverage?.reportsDirectory) {\n testOutputs.push(getOutput(test.coverage.reportsDirectory, projectRoot));\n }\n\n return { buildOutputs, testOutputs };\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","projectGraphCacheDirectory","targetsCache","existsSync","readTargetsCache","calculatedTargets","readJsonFile","writeTargetsToCache","targets","writeJsonFile","configFilePath","options","context","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","hash","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","viteConfig","loadConfigFromFile","command","mode","buildOutputs","testOutputs","getOutputs","config","namedInputs","getNamedInputs","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","testTargetName","testTarget","serveStaticTargetName","serveStaticTarget","outputs","targetDefaults","readTargetDefaultsForTarget","nxJsonConfiguration","targetConfig","cwd","joinPathFragments","undefined","cache","inputs","externalDependencies","executor","test","build","getOutput","path","startsWith","isAbsolute","resolve","relative","outDir","push","coverage","reportsDirectory"],"mappings":";;;;;;;;IAiDaA,kBAAkB;eAAlBA;;IAKAC,WAAW;eAAXA;;;wBA5CN;sBACsD;2CAEjB;gCACb;sBACgB;oBACP;6CACI;gCACD;oBACX;AAShC,MAAMC,YAAYC,IAAAA,UAAI,EAACC,0CAA0B,EAAE;AACnD,MAAMC,eAAeC,IAAAA,cAAU,EAACJ,aAAaK,qBAAqB,CAAC;AAEnE,MAAMC,oBAGF,CAAC;AAEL,SAASD;IAIP,OAAOE,IAAAA,oBAAY,EAACP;AACtB;AAEA,SAASQ,oBACPC,OAA4D;IAE5DC,IAAAA,qBAAa,EAACV,WAAWS;AAC3B;AAEO,MAAMX,qBAAyC;IACpDU,oBAAoBF;IACpB,OAAO,EAAE;AACX;AAEO,MAAMP,cAA8C;IACzD;IACA,OAAOY,gBAAgBC,SAASC;QAC9B,MAAMC,cAAcC,IAAAA,aAAO,EAACJ;QAC5B,wEAAwE;QACxE,MAAMK,eAAeC,IAAAA,eAAW,EAAChB,IAAAA,UAAI,EAACY,QAAQK,aAAa,EAAEJ;QAC7D,IACE,CAACE,aAAaG,QAAQ,CAAC,mBACvB,CAACH,aAAaG,QAAQ,CAAC,iBACvB;YACA,OAAO,CAAC;QACV;QAEAP,UAAUQ,iBAAiBR;QAE3B,MAAMS,OAAOC,IAAAA,wDAA2B,EAACR,aAAaF,SAASC,SAAS;YACtEU,IAAAA,mBAAe,EAACC,IAAAA,4BAAoB,EAACX,QAAQK,aAAa;SAC3D;QACD,MAAMT,UAAUN,YAAY,CAACkB,KAAK,GAC9BlB,YAAY,CAACkB,KAAK,GAClB,MAAMI,iBAAiBd,gBAAgBG,aAAaF,SAASC;QAEjEP,iBAAiB,CAACe,KAAK,GAAGZ;QAE1B,OAAO;YACLiB,UAAU;gBACR,CAACZ,YAAY,EAAE;oBACba,MAAMb;oBACNL;gBACF;YACF;QACF;IACF;CACD;AAED,eAAegB,iBACbd,cAAsB,EACtBG,WAAmB,EACnBF,OAA0B,EAC1BC,OAA2B;IAE3B,MAAMe,aAAa,MAAMC,IAAAA,wBAAkB,EACzC;QACEC,SAAS;QACTC,MAAM;IACR,GACApB;IAGF,MAAM,EAAEqB,YAAY,EAAEC,WAAW,EAAE,GAAGC,WACpCpB,aACAc,8BAAAA,WAAYO,MAAM;IAGpB,MAAMC,cAAcC,IAAAA,8BAAc,EAACvB,aAAaD;IAEhD,MAAMJ,UAA+C,CAAC;IAEtDA,OAAO,CAACG,QAAQ0B,eAAe,CAAC,GAAG,MAAMC,YACvC1B,SACAuB,aACAJ,cACApB,SACAE;IAGFL,OAAO,CAACG,QAAQ4B,eAAe,CAAC,GAAGC,YAAY3B;IAE/CL,OAAO,CAACG,QAAQ8B,iBAAiB,CAAC,GAAGC,cAAc7B;IAEnDL,OAAO,CAACG,QAAQgC,cAAc,CAAC,GAAG,MAAMC,WACtChC,SACAuB,aACAH,aACArB,SACAE;IAGFL,OAAO,CAACG,QAAQkC,qBAAqB,CAAC,GAAGC,kBAAkBnC;IAE3D,OAAOH;AACT;AAEA,eAAe8B,YACb1B,OAA2B,EAC3BuB,WAEC,EACDY,OAAiB,EACjBpC,OAA0B,EAC1BE,WAAmB;IAEnB,MAAMmC,iBAAiBC,IAAAA,sDAA2B,EAChDtC,QAAQ0B,eAAe,EACvBzB,QAAQsC,mBAAmB,CAACF,cAAc;IAG5C,MAAMG,eAAoC;QACxCtB,SAAS,CAAC,UAAU,CAAC;QACrBlB,SAAS;YACPyC,KAAKC,IAAAA,yBAAiB,EAACxC;QACzB;IACF;IAEA,IAAImC,CAAAA,kCAAAA,eAAgBD,OAAO,MAAKO,WAAW;QACzCH,aAAaJ,OAAO,GAAGA;IACzB;IAEA,IAAIC,CAAAA,kCAAAA,eAAgBO,KAAK,MAAKD,WAAW;QACvCH,aAAaI,KAAK,GAAG;IACvB;IAEA,IAAIP,CAAAA,kCAAAA,eAAgBQ,MAAM,MAAKF,WAAW;QACxCH,aAAaK,MAAM,GAAG;eAChB,gBAAgBrB,cAChB;gBAAC;gBAAc;aAAc,GAC7B;gBAAC;gBAAW;aAAW;YAC3B;gBACEsB,sBAAsB;oBAAC;iBAAO;YAChC;SACD;IACH;IAEA,OAAON;AACT;AAEA,SAASX,YAAY3B,WAAmB;IACtC,MAAMsC,eAAoC;QACxCtB,SAAS,CAAC,UAAU,CAAC;QACrBlB,SAAS;YACPyC,KAAKC,IAAAA,yBAAiB,EAACxC;QACzB;IACF;IAEA,OAAOsC;AACT;AAEA,SAAST,cAAc7B,WAAmB;IACxC,MAAMsC,eAAoC;QACxCtB,SAAS,CAAC,YAAY,CAAC;QACvBlB,SAAS;YACPyC,KAAKC,IAAAA,yBAAiB,EAACxC;QACzB;IACF;IAEA,OAAOsC;AACT;AAEA,eAAeP,WACbhC,OAA2B,EAC3BuB,WAEC,EACDY,OAAiB,EACjBpC,OAA0B,EAC1BE,WAAmB;IAEnB,MAAMmC,iBAAiBC,IAAAA,sDAA2B,EAChDtC,QAAQgC,cAAc,EACtB/B,QAAQsC,mBAAmB,CAACF,cAAc;IAG5C,MAAMG,eAAoC;QACxCtB,SAAS,CAAC,UAAU,CAAC;QACrBlB,SAAS;YACPyC,KAAKC,IAAAA,yBAAiB,EAACxC;QACzB;IACF;IAEA,IAAImC,CAAAA,kCAAAA,eAAgBD,OAAO,MAAKO,WAAW;QACzCH,aAAaJ,OAAO,GAAGA;IACzB;IAEA,IAAIC,CAAAA,kCAAAA,eAAgBO,KAAK,MAAKD,WAAW;QACvCH,aAAaI,KAAK,GAAG;IACvB;IAEA,IAAIP,CAAAA,kCAAAA,eAAgBQ,MAAM,MAAKF,WAAW;QACxCH,aAAaK,MAAM,GAAG;eAChB,gBAAgBrB,cAChB;gBAAC;gBAAc;aAAc,GAC7B;gBAAC;gBAAW;aAAW;YAC3B;gBACEsB,sBAAsB;oBAAC;iBAAS;YAClC;SACD;IACH;IACA,OAAON;AACT;AAEA,SAASL,kBAAkBnC,OAA0B;IACnD,MAAMwC,eAAoC;QACxCO,UAAU;QACV/C,SAAS;YACP2B,aAAa,CAAC,EAAE3B,QAAQ0B,eAAe,CAAC,CAAC;QAC3C;IACF;IAEA,OAAOc;AACT;AAEA,SAASlB,WACPpB,WAAmB,EACnBc,UAAsB;QAuBlBgC;IAlBJ,MAAM,EAAEC,KAAK,EAAED,IAAI,EAAE,GAAGhC;IACxB,MAAMI,eAAe;QAAC;KAAuB;IAC7C,MAAMC,cAAc;QAAC;KAA6B;IAElD,SAAS6B,UAAUC,IAAY,EAAEjD,WAAmB;QAClD,IAAIiD,KAAKC,UAAU,CAAC,OAAO;YACzB,OAAO/D,IAAAA,UAAI,EAAC,mBAAmBA,IAAAA,UAAI,EAACa,aAAaiD;QACnD,OAAO,IAAIE,IAAAA,gBAAU,EAACC,IAAAA,aAAO,EAACH,QAAQ;YACpC,OAAO,CAAC,gBAAgB,EAAEI,IAAAA,cAAQ,EAACjD,qBAAa,EAAE6C,MAAM,CAAC;QAC3D,OAAO;YACL,OAAO9D,IAAAA,UAAI,EAAC,iBAAiB8D;QAC/B;IACF;IAEA,IAAIF,yBAAAA,MAAOO,MAAM,EAAE;QACjBpC,aAAaqC,IAAI,CAACP,UAAUD,MAAMO,MAAM,EAAEtD;IAC5C;IAEA,IAAI8C,yBAAAA,iBAAAA,KAAMU,QAAQ,qBAAdV,eAAgBW,gBAAgB,EAAE;QACpCtC,YAAYoC,IAAI,CAACP,UAAUF,KAAKU,QAAQ,CAACC,gBAAgB,EAAEzD;IAC7D;IAEA,OAAO;QAAEkB;QAAcC;IAAY;AACrC;AAEA,SAASb,iBAAiBR,OAA0B;QAElDA,UACAA,WACAA,WACAA,WACAA;IALAA,kBAAAA,UAAAA,UAAY,CAAC;;IACbA,qBAAAA,WAAAA,SAAQ0B,8CAAR1B,SAAQ0B,kBAAoB;;IAC5B1B,qBAAAA,YAAAA,SAAQ4B,8CAAR5B,UAAQ4B,kBAAoB;;IAC5B5B,uBAAAA,YAAAA,SAAQ8B,kDAAR9B,UAAQ8B,oBAAsB;;IAC9B9B,oBAAAA,YAAAA,SAAQgC,4CAARhC,UAAQgC,iBAAmB;;IAC3BhC,2BAAAA,YAAAA,SAAQkC,0DAARlC,UAAQkC,wBAA0B;IAClC,OAAOlC;AACT"}
|
|
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 workspaceRoot,\n writeJsonFile,\n} from '@nx/devkit';\nimport { dirname, isAbsolute, join, relative, resolve } from 'path';\nimport { getNamedInputs } from '@nx/devkit/src/utils/get-named-inputs';\nimport { loadConfigFromFile, UserConfig } from 'vite';\nimport { existsSync, readdirSync } from 'fs';\nimport { calculateHashForCreateNodes } from '@nx/devkit/src/utils/calculate-hash-for-create-nodes';\nimport { projectGraphCacheDirectory } from 'nx/src/utils/cache-directory';\nimport { getLockFileName } from '@nx/js';\n\nexport interface VitePluginOptions {\n buildTargetName?: string;\n testTargetName?: string;\n serveTargetName?: string;\n previewTargetName?: string;\n serveStaticTargetName?: string;\n}\n\nconst cachePath = join(projectGraphCacheDirectory, 'vite.hash');\nconst targetsCache = existsSync(cachePath) ? readTargetsCache() : {};\n\nconst calculatedTargets: Record<\n string,\n Record<string, TargetConfiguration>\n> = {};\n\nfunction readTargetsCache(): Record<\n string,\n Record<string, TargetConfiguration>\n> {\n return readJsonFile(cachePath);\n}\n\nfunction writeTargetsToCache(\n targets: Record<string, Record<string, TargetConfiguration>>\n) {\n writeJsonFile(cachePath, targets);\n}\n\nexport const createDependencies: CreateDependencies = () => {\n writeTargetsToCache(calculatedTargets);\n return [];\n};\n\nexport const createNodes: CreateNodes<VitePluginOptions> = [\n '**/vite.config.{js,ts}',\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 const hash = calculateHashForCreateNodes(projectRoot, options, context, [\n getLockFileName(detectPackageManager(context.workspaceRoot)),\n ]);\n const targets = targetsCache[hash]\n ? targetsCache[hash]\n : await buildViteTargets(configFilePath, projectRoot, options, context);\n\n calculatedTargets[hash] = targets;\n\n return {\n projects: {\n [projectRoot]: {\n root: projectRoot,\n targets,\n },\n },\n };\n },\n];\n\nasync function buildViteTargets(\n configFilePath: string,\n projectRoot: string,\n options: VitePluginOptions,\n context: CreateNodesContext\n) {\n const viteConfig = await loadConfigFromFile(\n {\n command: 'build',\n mode: 'production',\n },\n configFilePath\n );\n\n const { buildOutputs, testOutputs } = getOutputs(\n projectRoot,\n viteConfig?.config\n );\n\n const namedInputs = getNamedInputs(projectRoot, context);\n\n const targets: Record<string, TargetConfiguration> = {};\n\n targets[options.buildTargetName] = await buildTarget(\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.testTargetName] = await testTarget(\n namedInputs,\n testOutputs,\n projectRoot\n );\n\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\n\n return targets;\n}\n\nasync function buildTarget(\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 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 run`,\n options: { cwd: joinPathFragments(projectRoot) },\n cache: true,\n inputs: [\n ...('production' in namedInputs\n ? ['production', '^production']\n : ['default', '^default']),\n {\n externalDependencies: ['vitest'],\n },\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 },\n };\n\n return targetConfig;\n}\n\nfunction getOutputs(\n projectRoot: string,\n viteConfig: UserConfig\n): {\n buildOutputs: string[];\n testOutputs: string[];\n} {\n const { build, test } = viteConfig;\n const buildOutputs = ['{options.outputPath}'];\n const testOutputs = ['{options.reportsDirectory}'];\n\n function getOutput(path: string, projectRoot: string): string {\n if (path.startsWith('..')) {\n return join('{workspaceRoot}', join(projectRoot, path));\n } else if (isAbsolute(resolve(path))) {\n return `{workspaceRoot}/${relative(workspaceRoot, path)}`;\n } else {\n return join('{projectRoot}', path);\n }\n }\n\n if (build?.outDir) {\n buildOutputs.push(getOutput(build.outDir, projectRoot));\n }\n\n if (test?.coverage?.reportsDirectory) {\n testOutputs.push(getOutput(test.coverage.reportsDirectory, projectRoot));\n }\n\n return { buildOutputs, testOutputs };\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","projectGraphCacheDirectory","targetsCache","existsSync","readTargetsCache","calculatedTargets","readJsonFile","writeTargetsToCache","targets","writeJsonFile","configFilePath","options","context","projectRoot","dirname","siblingFiles","readdirSync","workspaceRoot","includes","normalizeOptions","hash","calculateHashForCreateNodes","getLockFileName","detectPackageManager","buildViteTargets","projects","root","viteConfig","loadConfigFromFile","command","mode","buildOutputs","testOutputs","getOutputs","config","namedInputs","getNamedInputs","buildTargetName","buildTarget","serveTargetName","serveTarget","previewTargetName","previewTarget","testTargetName","testTarget","serveStaticTargetName","serveStaticTarget","outputs","cwd","joinPathFragments","cache","inputs","externalDependencies","targetConfig","executor","test","build","getOutput","path","startsWith","isAbsolute","resolve","relative","outDir","push","coverage","reportsDirectory"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ _export(exports, {
|
|
|
16
16
|
const _js = require("@nx/js");
|
|
17
17
|
const _path = require("path");
|
|
18
18
|
const _buildablelibsutils = require("@nx/js/src/utils/buildable-libs-utils");
|
|
19
|
+
const _optionsutils = require("./options-utils");
|
|
19
20
|
async function validateTypes(opts) {
|
|
20
21
|
const result = await (0, _js.runTypeCheck)({
|
|
21
22
|
workspaceRoot: opts.workspaceRoot,
|
|
@@ -29,15 +30,17 @@ async function validateTypes(opts) {
|
|
|
29
30
|
}
|
|
30
31
|
function createBuildableTsConfig(projectRoot, options, context) {
|
|
31
32
|
var _options, _buildLibsFromSource;
|
|
32
|
-
const tsConfig = (0,
|
|
33
|
+
const tsConfig = (0, _optionsutils.getProjectTsConfigPath)(projectRoot);
|
|
33
34
|
var _;
|
|
34
35
|
(_ = (_options = options)[_buildLibsFromSource = 'buildLibsFromSource']) != null ? _ : _options[_buildLibsFromSource] = true;
|
|
35
36
|
if (!options['buildLibsFromSource']) {
|
|
36
37
|
const { dependencies } = (0, _buildablelibsutils.calculateProjectBuildableDependencies)(context.taskGraph, context.projectGraph, context.root, context.projectName, // When using incremental building and the serve target is called
|
|
37
38
|
// we need to get the deps for the 'build' target instead.
|
|
38
39
|
context.targetName === 'serve' ? 'build' : context.targetName, context.configurationName);
|
|
39
|
-
//
|
|
40
|
-
|
|
40
|
+
// This tsconfig is used via the Vite ts paths plugin.
|
|
41
|
+
// It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).
|
|
42
|
+
const tmpTsConfigPath = (0, _buildablelibsutils.createTmpTsConfig)(tsConfig, context.root, projectRoot, dependencies);
|
|
43
|
+
process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/vite/src/utils/executor-utils.ts"],"sourcesContent":["import { printDiagnostics, runTypeCheck } from '@nx/js';\nimport { join } from 'path';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport { ExecutorContext } from '@nx/devkit';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport {\n calculateProjectBuildableDependencies,\n createTmpTsConfig,\n} from '@nx/js/src/utils/buildable-libs-utils';\nimport { getProjectTsConfigPath } from './options-utils';\n\nexport async function validateTypes(opts: {\n workspaceRoot: string;\n projectRoot: string;\n tsconfig: string;\n}): Promise<void> {\n const result = await runTypeCheck({\n workspaceRoot: opts.workspaceRoot,\n tsConfigPath: join(opts.workspaceRoot, opts.tsconfig),\n mode: 'noEmit',\n });\n\n await printDiagnostics(result.errors, result.warnings);\n\n if (result.errors.length > 0) {\n throw new Error('Found type errors. See above.');\n }\n}\n\nexport function createBuildableTsConfig(\n projectRoot: string,\n options: ViteBuildExecutorOptions | ViteDevServerExecutorOptions,\n context: ExecutorContext\n) {\n const tsConfig = getProjectTsConfigPath(projectRoot);\n options['buildLibsFromSource'] ??= true;\n\n if (!options['buildLibsFromSource']) {\n const { dependencies } = calculateProjectBuildableDependencies(\n context.taskGraph,\n context.projectGraph,\n context.root,\n context.projectName,\n // When using incremental building and the serve target is called\n // we need to get the deps for the 'build' target instead.\n context.targetName === 'serve' ? 'build' : context.targetName,\n context.configurationName\n );\n // This tsconfig is used via the Vite ts paths plugin.\n // It can be also used by other user-defined Vite plugins (e.g. for creating type declaration files).\n const tmpTsConfigPath = createTmpTsConfig(\n tsConfig,\n context.root,\n projectRoot,\n dependencies\n );\n process.env.NX_TSCONFIG_PATH = tmpTsConfigPath;\n }\n}\n"],"names":["validateTypes","createBuildableTsConfig","opts","result","runTypeCheck","workspaceRoot","tsConfigPath","join","tsconfig","mode","printDiagnostics","errors","warnings","length","Error","projectRoot","options","context","tsConfig","getProjectTsConfigPath","dependencies","calculateProjectBuildableDependencies","taskGraph","projectGraph","root","projectName","targetName","configurationName","tmpTsConfigPath","createTmpTsConfig","process","env","NX_TSCONFIG_PATH"],"mappings":";;;;;;;;IAWsBA,aAAa;eAAbA;;IAkBNC,uBAAuB;eAAvBA;;;oBA7B+B;sBAC1B;oCAOd;8BACgC;AAEhC,eAAeD,cAAcE,IAInC;IACC,MAAMC,SAAS,MAAMC,IAAAA,gBAAY,EAAC;QAChCC,eAAeH,KAAKG,aAAa;QACjCC,cAAcC,IAAAA,UAAI,EAACL,KAAKG,aAAa,EAAEH,KAAKM,QAAQ;QACpDC,MAAM;IACR;IAEA,MAAMC,IAAAA,oBAAgB,EAACP,OAAOQ,MAAM,EAAER,OAAOS,QAAQ;IAErD,IAAIT,OAAOQ,MAAM,CAACE,MAAM,GAAG,GAAG;QAC5B,MAAM,IAAIC,MAAM;IAClB;AACF;AAEO,SAASb,wBACdc,WAAmB,EACnBC,OAAgE,EAChEC,OAAwB;QAGxBD,UAAQ;IADR,MAAME,WAAWC,IAAAA,oCAAsB,EAACJ;;IACxCC,MAAAA,WAAAA,QAAO,CAAC,uBAAA,sBAAsB,gBAA9BA,QAAO,CAAC,qBAAsB,GAAK;IAEnC,IAAI,CAACA,OAAO,CAAC,sBAAsB,EAAE;QACnC,MAAM,EAAEI,YAAY,EAAE,GAAGC,IAAAA,yDAAqC,EAC5DJ,QAAQK,SAAS,EACjBL,QAAQM,YAAY,EACpBN,QAAQO,IAAI,EACZP,QAAQQ,WAAW,EACnB,iEAAiE;QACjE,0DAA0D;QAC1DR,QAAQS,UAAU,KAAK,UAAU,UAAUT,QAAQS,UAAU,EAC7DT,QAAQU,iBAAiB;QAE3B,sDAAsD;QACtD,qGAAqG;QACrG,MAAMC,kBAAkBC,IAAAA,qCAAiB,EACvCX,UACAD,QAAQO,IAAI,EACZT,aACAK;QAEFU,QAAQC,GAAG,CAACC,gBAAgB,GAAGJ;IACjC;AACF"}
|