@nx/vite 19.3.0 → 19.4.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/package.json +4 -4
- package/src/plugins/plugin.js +18 -8
- package/src/plugins/plugin.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/vite",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.4.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.
|
|
33
|
+
"@nx/devkit": "19.4.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.
|
|
37
|
+
"@nx/js": "19.4.0-beta.1",
|
|
38
38
|
"tsconfig-paths": "^4.1.2",
|
|
39
|
-
"@nrwl/vite": "19.
|
|
39
|
+
"@nrwl/vite": "19.4.0-beta.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"vite": "^5.0.0",
|
package/src/plugins/plugin.js
CHANGED
|
@@ -72,13 +72,19 @@ async function createNodesInternal(configFilePath, options, context, targetsCach
|
|
|
72
72
|
var _;
|
|
73
73
|
(_ = (_targetsCache = targetsCache)[_hash = hash]) != null ? _ : _targetsCache[_hash] = await buildViteTargets(configFilePath, projectRoot, normalizedOptions, context);
|
|
74
74
|
const { targets, metadata } = targetsCache[hash];
|
|
75
|
+
const project = {
|
|
76
|
+
root: projectRoot,
|
|
77
|
+
targets,
|
|
78
|
+
metadata
|
|
79
|
+
};
|
|
80
|
+
// If project is buildable, then the project type.
|
|
81
|
+
// If it is not buildable, then leave it to other plugins/project.json to set the project type.
|
|
82
|
+
if (project.targets[options.buildTargetName]) {
|
|
83
|
+
project.projectType = project.targets[options.serveTargetName] ? 'application' : 'library';
|
|
84
|
+
}
|
|
75
85
|
return {
|
|
76
86
|
projects: {
|
|
77
|
-
[projectRoot]:
|
|
78
|
-
root: projectRoot,
|
|
79
|
-
targets,
|
|
80
|
-
metadata
|
|
81
|
-
}
|
|
87
|
+
[projectRoot]: project
|
|
82
88
|
}
|
|
83
89
|
};
|
|
84
90
|
}
|
|
@@ -103,10 +109,14 @@ async function buildViteTargets(configFilePath, projectRoot, options, context) {
|
|
|
103
109
|
// If file is not vitest.config and buildable, create targets for build, serve, preview and serve-static
|
|
104
110
|
const hasRemixPlugin = viteConfig.plugins && viteConfig.plugins.some((p)=>p.name === 'remix');
|
|
105
111
|
if (!configFilePath.includes('vitest.config') && !hasRemixPlugin && isBuildable) {
|
|
112
|
+
var _viteConfig_build;
|
|
106
113
|
targets[options.buildTargetName] = await buildTarget(options.buildTargetName, namedInputs, buildOutputs, projectRoot);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
// If running in library mode, then there is nothing to serve.
|
|
115
|
+
if (!((_viteConfig_build = viteConfig.build) == null ? void 0 : _viteConfig_build.lib)) {
|
|
116
|
+
targets[options.serveTargetName] = serveTarget(projectRoot);
|
|
117
|
+
targets[options.previewTargetName] = previewTarget(projectRoot);
|
|
118
|
+
targets[options.serveStaticTargetName] = serveStaticTarget(options);
|
|
119
|
+
}
|
|
110
120
|
}
|
|
111
121
|
// if file is vitest.config or vite.config has definition for test, create target for test
|
|
112
122
|
if (configFilePath.includes('vitest.config') || hasTest) {
|
|
@@ -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 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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"}
|
|
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 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 = project.targets[options.serveTargetName]\n ? 'application'\n : 'library';\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 context: CreateNodesContext\n): Promise<ViteTargets> {\n const absoluteConfigFilePath = joinPathFragments(\n context.workspaceRoot,\n configFilePath\n );\n // Workaround for the `build$3 is not a function` error that we sometimes see in agents.\n // This should be removed later once we address the issue properly\n try {\n const importEsbuild = () => new Function('return import(\"esbuild\")')();\n await importEsbuild();\n } catch {\n // do nothing\n }\n const { resolveConfig } = await loadViteDynamicImport();\n const 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 // If running in library mode, then there is nothing to serve.\n if (!viteConfig.build?.lib) {\n targets[options.serveTargetName] = serveTarget(projectRoot);\n targets[options.previewTargetName] = previewTarget(projectRoot);\n targets[options.serveStaticTargetName] = serveStaticTarget(options) as {};\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 };\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","project","root","buildTargetName","projectType","serveTargetName","projects","absoluteConfigFilePath","joinPathFragments","importEsbuild","Function","resolveConfig","loadViteDynamicImport","viteConfig","mode","buildOutputs","testOutputs","hasTest","isBuildable","getOutputs","namedInputs","getNamedInputs","hasRemixPlugin","plugins","some","p","name","buildTarget","build","lib","serveTarget","previewTargetName","previewTarget","serveStaticTargetName","serveStaticTarget","testTargetName","testTarget","outputs","command","cwd","cache","dependsOn","inputs","externalDependencies","targetConfig","env","executor","spa","test","buildOutputPath","normalizeOutputPath","outDir","rollupOptions","reportsDirectoryPath","coverage","reportsDirectory","outputPath","path","isAbsolute","relative","startsWith"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|