@nx/vite 16.0.0-beta.7 → 16.0.0-rc.0

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": "16.0.0-beta.7",
3
+ "version": "16.0.0-rc.0",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for building and testing applications using Vite",
6
6
  "repository": {
@@ -29,9 +29,9 @@
29
29
  "migrations": "./migrations.json"
30
30
  },
31
31
  "dependencies": {
32
- "@nrwl/vite": "16.0.0-beta.7",
33
- "@nx/devkit": "16.0.0-beta.7",
34
- "@nx/js": "16.0.0-beta.7",
32
+ "@nrwl/vite": "16.0.0-rc.0",
33
+ "@nx/devkit": "16.0.0-rc.0",
34
+ "@nx/js": "16.0.0-rc.0",
35
35
  "@phenomnomnominal/tsquery": "~5.0.1",
36
36
  "@swc/helpers": "~0.5.0",
37
37
  "dotenv": "~10.0.0",
@@ -59,5 +59,5 @@
59
59
  "./src/executors/*.impl": "./src/executors/*.impl.js",
60
60
  "./src/executors/*/compat": "./src/executors/*/compat.js"
61
61
  },
62
- "gitHead": "eb477479bf73bca940323a66e486221f00006c0f"
62
+ "gitHead": "19e34df1cd3e286cacc9e73781cbb8fbbcd6fc69"
63
63
  }
@@ -32,8 +32,9 @@ async function* viteBuildExecutor(options, context) {
32
32
  const watcherOrOutput = await runInstance(buildConfig);
33
33
  const libraryPackageJson = (0, _path.resolve)(projectRoot, 'package.json');
34
34
  const rootPackageJson = (0, _path.resolve)(context.root, 'package.json');
35
+ const distPackageJson = (0, _path.resolve)(normalizedOptions.outputPath, 'package.json');
35
36
  // For buildable libs, copy package.json if it exists.
36
- if ((0, _fs.existsSync)(libraryPackageJson) && rootPackageJson !== libraryPackageJson) {
37
+ if (!(0, _fs.existsSync)(distPackageJson) && (0, _fs.existsSync)(libraryPackageJson) && rootPackageJson !== libraryPackageJson) {
37
38
  await (0, _js.copyAssets)({
38
39
  outputPath: normalizedOptions.outputPath,
39
40
  assets: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext } from '@nx/devkit';\nimport { build, InlineConfig, mergeConfig } from 'vite';\nimport {\n getViteBuildOptions,\n getViteSharedConfig,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport { copyAssets } from '@nx/js';\nimport { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\n\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nexport async function* viteBuildExecutor(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(projectRoot, 'tsconfig.json'));\n\n const normalizedOptions = normalizeOptions(options);\n\n const buildConfig = mergeConfig(\n getViteSharedConfig(normalizedOptions, false, context),\n {\n build: getViteBuildOptions(normalizedOptions, context),\n }\n );\n\n const watcherOrOutput = await runInstance(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n\n // For buildable libs, copy package.json if it exists.\n if (\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: normalizedOptions.outputPath,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(normalizedOptions.outputPath, fileName);\n yield { success: true, outfile };\n }\n}\n\nfunction runInstance(options: InlineConfig) {\n return build({\n ...options,\n });\n}\n\nfunction normalizeOptions(options: ViteBuildExecutorOptions) {\n const normalizedOptions = { ...options };\n\n // coerce watch to null or {} to match with Vite's watch config\n if (options.watch === false) {\n normalizedOptions.watch = null;\n } else if (options.watch === true) {\n normalizedOptions.watch = {};\n }\n\n return normalizedOptions;\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","normalizedOptions","normalizeOptions","buildConfig","mergeConfig","getViteSharedConfig","build","getViteBuildOptions","watcherOrOutput","runInstance","libraryPackageJson","rootPackageJson","existsSync","copyAssets","outputPath","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","watch"],"mappings":";;;;;;;;IAeuBA,iBAAiB;eAAjBA;;IAyFvB,OAAiC;eAAjC;;;;QAxGO;sBAE0C;8BAI1C;oBAEoB;oBACA;sBACH;+BACY;0BAEE;AAE/B,gBAAgBA,kBACrBC,OAAiC,EACjCC,OAAwB,EACxB;IACA,MAAMC,cACJD,QAAQE,sBAAsB,CAACC,QAAQ,CAACH,QAAQI,WAAW,CAAC,CAACC,IAAI;IAEnEC,IAAAA,+BAAqB,EAACC,IAAAA,aAAO,EAACN,aAAa;IAE3C,MAAMO,oBAAoBC,iBAAiBV;IAE3C,MAAMW,cAAcC,IAAAA,iBAAW,EAC7BC,IAAAA,iCAAmB,EAACJ,mBAAmB,KAAK,EAAER,UAC9C;QACEa,OAAOC,IAAAA,iCAAmB,EAACN,mBAAmBR;IAChD;IAGF,MAAMe,kBAAkB,MAAMC,YAAYN;IAE1C,MAAMO,qBAAqBV,IAAAA,aAAO,EAACN,aAAa;IAChD,MAAMiB,kBAAkBX,IAAAA,aAAO,EAACP,QAAQK,IAAI,EAAE;IAE9C,sDAAsD;IACtD,IACEc,IAAAA,cAAU,EAACF,uBACXC,oBAAoBD,oBACpB;QACA,MAAMG,IAAAA,cAAU,EACd;YACEC,YAAYb,kBAAkBa,UAAU;YACxCC,QAAQ;gBACN;oBACEC,OAAOtB;oBACPuB,QAAQ;oBACRC,MAAM;gBACR;aACD;QACH,GACAzB;IAEJ,CAAC;IAED,IAAI,QAAQe,iBAAiB;QAC3B,MAAMW,WAAWC,IAAAA,kCAAmB,EAAuB,CAAC,EAAEC,KAAI,EAAE,GAAK;YACvE,IAAIC,UAAU,IAAI;YAClBd,gBAAgBe,EAAE,CAAC,SAAS,CAACC,QAAU;gBACrC,IAAIA,MAAMC,IAAI,KAAK,SAAS;oBAC1BH,UAAU,IAAI;gBAChB,OAAO,IAAIE,MAAMC,IAAI,KAAK,SAAS;oBACjCH,UAAU,KAAK;gBACjB,OAAO,IAAIE,MAAMC,IAAI,KAAK,OAAO;oBAC/BJ,KAAK;wBAAEC;oBAAQ;gBACjB,CAAC;gBACD,sCAAsC;gBACtC,iDAAiD;gBACjD,IAAI,YAAYE,OAAO;oBACrBA,MAAME,MAAM,CAACC,KAAK;gBACpB,CAAC;YACH;QACF;QACA,OAAOR;IACT,OAAO;YACyCX,mBAC7BS;QADjB,MAAMA,SAAST,CAAAA,0BAAAA,KAAAA,IAAAA,eAAiB,CAAC,SAAS,AAAD,KAAKA,CAAAA,0BAAAA,KAAAA,IAAAA,CAAAA,oBAAAA,eAAiB,CAAC,EAAE,YAApBA,KAAAA,IAAAA,kBAAsBS,MAAF,AAAD;QACjE,MAAMW,WAAWX,CAAAA,iBAAAA,KAAAA,IAAAA,CAAAA,WAAAA,MAAQ,CAAC,EAAE,YAAXA,KAAAA,IAAAA,SAAaW,QAAF,AAAD,KAAe;QAC1C,MAAMC,UAAU7B,IAAAA,aAAO,EAACC,kBAAkBa,UAAU,EAAEc;QACtD,MAAM;YAAEN,SAAS,IAAI;YAAEO;QAAQ;IACjC,CAAC;AACH;AAEA,SAASpB,YAAYjB,OAAqB,EAAE;IAC1C,OAAOc,IAAAA,WAAK,EAAC,eACRd;AAEP;AAEA,SAASU,iBAAiBV,OAAiC,EAAE;IAC3D,MAAMS,oBAAoB,eAAKT;IAE/B,+DAA+D;IAC/D,IAAIA,QAAQsC,KAAK,KAAK,KAAK,EAAE;QAC3B7B,kBAAkB6B,KAAK,GAAG,IAAI;IAChC,OAAO,IAAItC,QAAQsC,KAAK,KAAK,IAAI,EAAE;QACjC7B,kBAAkB6B,KAAK,GAAG,CAAC;IAC7B,CAAC;IAED,OAAO7B;AACT;MAEA,WAAeV"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/build/build.impl.ts"],"sourcesContent":["import 'dotenv/config';\nimport { ExecutorContext } from '@nx/devkit';\nimport { build, InlineConfig, mergeConfig } from 'vite';\nimport {\n getViteBuildOptions,\n getViteSharedConfig,\n} from '../../utils/options-utils';\nimport { ViteBuildExecutorOptions } from './schema';\nimport { copyAssets } from '@nx/js';\nimport { existsSync } from 'fs';\nimport { resolve } from 'path';\nimport { createAsyncIterable } from '@nx/devkit/src/utils/async-iterable';\n\nimport { registerTsConfigPaths } from '@nx/js/src/internal';\n\nexport async function* viteBuildExecutor(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n registerTsConfigPaths(resolve(projectRoot, 'tsconfig.json'));\n\n const normalizedOptions = normalizeOptions(options);\n\n const buildConfig = mergeConfig(\n getViteSharedConfig(normalizedOptions, false, context),\n {\n build: getViteBuildOptions(normalizedOptions, context),\n }\n );\n\n const watcherOrOutput = await runInstance(buildConfig);\n\n const libraryPackageJson = resolve(projectRoot, 'package.json');\n const rootPackageJson = resolve(context.root, 'package.json');\n const distPackageJson = resolve(normalizedOptions.outputPath, 'package.json');\n\n // For buildable libs, copy package.json if it exists.\n if (\n !existsSync(distPackageJson) &&\n existsSync(libraryPackageJson) &&\n rootPackageJson !== libraryPackageJson\n ) {\n await copyAssets(\n {\n outputPath: normalizedOptions.outputPath,\n assets: [\n {\n input: projectRoot,\n output: '.',\n glob: 'package.json',\n },\n ],\n },\n context\n );\n }\n\n if ('on' in watcherOrOutput) {\n const iterable = createAsyncIterable<{ success: boolean }>(({ next }) => {\n let success = true;\n watcherOrOutput.on('event', (event) => {\n if (event.code === 'START') {\n success = true;\n } else if (event.code === 'ERROR') {\n success = false;\n } else if (event.code === 'END') {\n next({ success });\n }\n // result must be closed when present.\n // see https://rollupjs.org/guide/en/#rollupwatch\n if ('result' in event) {\n event.result.close();\n }\n });\n });\n yield* iterable;\n } else {\n const output = watcherOrOutput?.['output'] || watcherOrOutput?.[0]?.output;\n const fileName = output?.[0]?.fileName || 'main.cjs';\n const outfile = resolve(normalizedOptions.outputPath, fileName);\n yield { success: true, outfile };\n }\n}\n\nfunction runInstance(options: InlineConfig) {\n return build({\n ...options,\n });\n}\n\nfunction normalizeOptions(options: ViteBuildExecutorOptions) {\n const normalizedOptions = { ...options };\n\n // coerce watch to null or {} to match with Vite's watch config\n if (options.watch === false) {\n normalizedOptions.watch = null;\n } else if (options.watch === true) {\n normalizedOptions.watch = {};\n }\n\n return normalizedOptions;\n}\n\nexport default viteBuildExecutor;\n"],"names":["viteBuildExecutor","options","context","projectRoot","projectsConfigurations","projects","projectName","root","registerTsConfigPaths","resolve","normalizedOptions","normalizeOptions","buildConfig","mergeConfig","getViteSharedConfig","build","getViteBuildOptions","watcherOrOutput","runInstance","libraryPackageJson","rootPackageJson","distPackageJson","outputPath","existsSync","copyAssets","assets","input","output","glob","iterable","createAsyncIterable","next","success","on","event","code","result","close","fileName","outfile","watch"],"mappings":"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"}
@@ -14,4 +14,5 @@ export interface ViteBuildExecutorOptions {
14
14
  mode?: string;
15
15
  ssr?: boolean | string;
16
16
  watch?: object | boolean;
17
+ target?: string | string[];
17
18
  }
@@ -67,6 +67,10 @@
67
67
  }
68
68
  ]
69
69
  },
70
+ "target": {
71
+ "description": "Browser compatibility target for the final bundle. For more info: https://vitejs.dev/config/build-options.html#build-target",
72
+ "type": "string"
73
+ },
70
74
  "minify": {
71
75
  "description": "Output sourcemaps. Use 'hidden' for use with error reporting tools without generating sourcemap comment.",
72
76
  "oneOf": [
@@ -8,4 +8,5 @@ export interface VitestExecutorOptions {
8
8
  update?: boolean;
9
9
  reportsDirectory?: string;
10
10
  coverage?: boolean;
11
+ testFile?: string;
11
12
  }
@@ -56,6 +56,10 @@
56
56
  "reportsDirectory": {
57
57
  "type": "string",
58
58
  "description": "Directory to write coverage report to."
59
+ },
60
+ "testFile": {
61
+ "description": "The name of the file to test.",
62
+ "type": "string"
59
63
  }
60
64
  },
61
65
  "required": [],
@@ -54,7 +54,10 @@ async function* vitestExecutor(options, context) {
54
54
  const nxReporter = new NxReporter(options.watch);
55
55
  const settings = await getSettings(options, context);
56
56
  settings.reporters.push(nxReporter);
57
- const ctx = await startVitest(options.mode, [], settings);
57
+ const cliFilters = options.testFile ? [
58
+ options.testFile
59
+ ] : [];
60
+ const ctx = await startVitest(options.mode, cliFilters, settings);
58
61
  let hasErrors = false;
59
62
  const processExit = ()=>{
60
63
  ctx.exit();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n logger,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { CoverageOptions, File, Reporter } from 'vitest';\nimport { loadConfigFromFile } from 'vite';\nimport { VitestExecutorOptions } from './schema';\nimport { join, relative } from 'path';\nimport { existsSync } from 'fs';\n\nclass NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const nxReporter = new NxReporter(options.watch);\n const settings = await getSettings(options, context);\n settings.reporters.push(nxReporter);\n\n const ctx = await startVitest(options.mode, [], settings);\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (options.watch) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nasync function getSettings(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot = context.projectGraph.nodes[context.projectName].data.root;\n const offset = relative(workspaceRoot, context.cwd);\n // if reportsDirectory is not provides vitest will remove all files in the project root\n // when coverage is enabled in the vite.config.ts\n const coverage: CoverageOptions = options.reportsDirectory\n ? {\n enabled: options.coverage,\n reportsDirectory: options.reportsDirectory,\n }\n : {};\n\n const viteConfigPath = options.config\n ? join(context.root, options.config)\n : findViteConfig(join(context.root, projectRoot));\n\n const resolved = await loadConfigFromFile(\n {\n mode: options.mode,\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.test) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved.path ?? viteConfigPath\n }\nSome settings may not be applied as expected.\nYou can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n\n const settings = {\n ...options,\n // when running nx from the project root, the root will get appended to the cwd.\n // creating an invalid path and no tests will be found.\n // instead if we are not at the root, let the cwd be root.\n root: offset === '' ? projectRoot : '',\n reporters: [\n ...(options.reporters ?? []),\n ...((resolved?.config?.test?.reporters as string[]) ?? []),\n 'default',\n ] as (string | Reporter)[],\n coverage: { ...resolved?.config?.test?.coverage, ...coverage },\n };\n\n return settings;\n}\n\nfunction findViteConfig(projectRootFullPath: string): string {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (existsSync(join(projectRootFullPath, `vite.config.${ext}`))) {\n return join(projectRootFullPath, `vite.config.${ext}`);\n }\n }\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor","options","context","startVitest","Function","nxReporter","settings","getSettings","reporters","push","ctx","mode","processExit","exit","process","on","report","exitCode","success","resolved","projectRoot","projectGraph","nodes","projectName","data","root","offset","relative","workspaceRoot","cwd","coverage","reportsDirectory","enabled","viteConfigPath","config","join","findViteConfig","loadConfigFromFile","command","test","logger","warn","stripIndents","path","projectRootFullPath","allowsExt","ext","existsSync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/vite/src/executors/test/vitest.impl.ts"],"sourcesContent":["import {\n ExecutorContext,\n logger,\n stripIndents,\n workspaceRoot,\n} from '@nx/devkit';\nimport { CoverageOptions, File, Reporter } from 'vitest';\nimport { loadConfigFromFile } from 'vite';\nimport { VitestExecutorOptions } from './schema';\nimport { join, relative } from 'path';\nimport { existsSync } from 'fs';\n\nclass NxReporter implements Reporter {\n deferred: {\n promise: Promise<boolean>;\n resolve: (val: boolean) => void;\n };\n\n constructor(private watch: boolean) {\n this.setupDeferred();\n }\n\n async *[Symbol.asyncIterator]() {\n do {\n const hasErrors = await this.deferred.promise;\n yield { hasErrors };\n this.setupDeferred();\n } while (this.watch);\n }\n\n private setupDeferred() {\n let resolve: (val: boolean) => void;\n this.deferred = {\n promise: new Promise((res) => {\n resolve = res;\n }),\n resolve,\n };\n }\n\n onFinished(files: File[], errors?: unknown[]) {\n const hasErrors =\n files.some((f) => f.result?.state === 'fail') || errors?.length > 0;\n this.deferred.resolve(hasErrors);\n }\n}\n\nexport async function* vitestExecutor(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const { startVitest } = await (Function(\n 'return import(\"vitest/node\")'\n )() as Promise<typeof import('vitest/node')>);\n\n const nxReporter = new NxReporter(options.watch);\n const settings = await getSettings(options, context);\n settings.reporters.push(nxReporter);\n const cliFilters = options.testFile ? [options.testFile] : [];\n\n const ctx = await startVitest(options.mode, cliFilters, settings);\n\n let hasErrors = false;\n\n const processExit = () => {\n ctx.exit();\n if (hasErrors) {\n process.exit(1);\n } else {\n process.exit(0);\n }\n };\n\n if (options.watch) {\n process.on('SIGINT', processExit);\n process.on('SIGTERM', processExit);\n process.on('exit', processExit);\n }\n\n for await (const report of nxReporter) {\n // vitest sets the exitCode = 1 when code coverage isn't met\n hasErrors =\n report.hasErrors || (process.exitCode && process.exitCode !== 0);\n }\n\n return {\n success: !hasErrors,\n };\n}\n\nasync function getSettings(\n options: VitestExecutorOptions,\n context: ExecutorContext\n) {\n const projectRoot = context.projectGraph.nodes[context.projectName].data.root;\n const offset = relative(workspaceRoot, context.cwd);\n // if reportsDirectory is not provides vitest will remove all files in the project root\n // when coverage is enabled in the vite.config.ts\n const coverage: CoverageOptions = options.reportsDirectory\n ? {\n enabled: options.coverage,\n reportsDirectory: options.reportsDirectory,\n }\n : {};\n\n const viteConfigPath = options.config\n ? join(context.root, options.config)\n : findViteConfig(join(context.root, projectRoot));\n\n const resolved = await loadConfigFromFile(\n {\n mode: options.mode,\n command: 'serve',\n },\n viteConfigPath\n );\n\n if (!viteConfigPath || !resolved?.config?.test) {\n logger.warn(stripIndents`Unable to load test config from config file ${\n resolved.path ?? viteConfigPath\n }\nSome settings may not be applied as expected.\nYou can manually set the config in the project, ${\n context.projectName\n }, configuration.\n `);\n }\n\n const settings = {\n ...options,\n // when running nx from the project root, the root will get appended to the cwd.\n // creating an invalid path and no tests will be found.\n // instead if we are not at the root, let the cwd be root.\n root: offset === '' ? projectRoot : '',\n reporters: [\n ...(options.reporters ?? []),\n ...((resolved?.config?.test?.reporters as string[]) ?? []),\n 'default',\n ] as (string | Reporter)[],\n coverage: { ...resolved?.config?.test?.coverage, ...coverage },\n };\n\n return settings;\n}\n\nfunction findViteConfig(projectRootFullPath: string): string {\n const allowsExt = ['js', 'mjs', 'ts', 'cjs', 'mts', 'cts'];\n\n for (const ext of allowsExt) {\n if (existsSync(join(projectRootFullPath, `vite.config.${ext}`))) {\n return join(projectRootFullPath, `vite.config.${ext}`);\n }\n }\n}\n\nexport default vitestExecutor;\n"],"names":["vitestExecutor","NxReporter","Symbol","asyncIterator","hasErrors","deferred","promise","setupDeferred","watch","resolve","Promise","res","onFinished","files","errors","some","f","result","state","length","constructor","options","context","startVitest","Function","nxReporter","settings","getSettings","reporters","push","cliFilters","testFile","ctx","mode","processExit","exit","process","on","report","exitCode","success","resolved","projectRoot","projectGraph","nodes","projectName","data","root","offset","relative","workspaceRoot","cwd","coverage","reportsDirectory","enabled","viteConfigPath","config","join","findViteConfig","loadConfigFromFile","command","test","logger","warn","stripIndents","path","projectRootFullPath","allowsExt","ext","existsSync"],"mappings":"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"}
@@ -88,12 +88,13 @@ function getViteServerOptions(options, context) {
88
88
  }
89
89
  function getViteBuildOptions(options, context) {
90
90
  const projectRoot = context.projectsConfigurations.projects[context.projectName].root;
91
+ var _options_target;
91
92
  return {
92
93
  outDir: (0, _path.relative)(projectRoot, options.outputPath),
93
94
  emptyOutDir: options.emptyOutDir,
94
95
  reportCompressedSize: true,
95
96
  cssCodeSplit: true,
96
- target: 'esnext',
97
+ target: (_options_target = options.target) != null ? _options_target : 'esnext',
97
98
  commonjsOptions: {
98
99
  transformMixedEsModules: true
99
100
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { join, relative } from 'path';\nimport {\n BuildOptions,\n InlineConfig,\n PluginOption,\n PreviewOptions,\n searchForWorkspaceRoot,\n ServerOptions,\n} from 'vite';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport replaceFiles from '../../plugins/rollup-replace-files.plugin';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport * as path from 'path';\n\n/**\n * Returns the path to the vite config file or undefined when not found.\n */\nexport function normalizeViteConfigFilePath(\n projectRoot: string,\n configFile?: string\n): string | undefined {\n return configFile && existsSync(joinPathFragments(configFile))\n ? configFile\n : existsSync(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : existsSync(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\n/**\n * Returns the path to the proxy configuration file or undefined when not found.\n */\nexport function getViteServerProxyConfigPath(\n nxProxyConfig: string | undefined,\n context: ExecutorContext\n): string | undefined {\n if (nxProxyConfig) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const proxyConfigPath = nxProxyConfig\n ? join(context.root, nxProxyConfig)\n : join(projectRoot, 'proxy.conf.json');\n\n if (existsSync(proxyConfigPath)) {\n return proxyConfigPath;\n }\n }\n}\n\n/**\n * Builds the shared options for vite.\n *\n * Most shared options are derived from the build target.\n */\nexport function getViteSharedConfig(\n options: ViteBuildExecutorOptions,\n clearScreen: boolean | undefined,\n context: ExecutorContext\n): InlineConfig {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const root = path.relative(\n context.cwd,\n joinPathFragments(context.root, projectRoot)\n );\n\n return {\n mode: options.mode,\n root,\n base: options.base,\n configFile: normalizeViteConfigFilePath(projectRoot, options.configFile),\n plugins: [replaceFiles(options.fileReplacements) as PluginOption],\n optimizeDeps: { force: options.force },\n clearScreen: clearScreen,\n logLevel: options.logLevel,\n };\n}\n\n/**\n * Builds the options for the vite dev server.\n */\nexport function getViteServerOptions(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): ServerOptions {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const serverOptions: ServerOptions = {\n host: options.host,\n port: options.port,\n https: options.https,\n hmr: options.hmr,\n open: options.open,\n cors: options.cors,\n fs: {\n allow: [\n searchForWorkspaceRoot(joinPathFragments(projectRoot)),\n joinPathFragments(context.root, 'node_modules/vite'),\n ],\n },\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\n/**\n * Builds the build options for the vite.\n */\nexport function getViteBuildOptions(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n): BuildOptions {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n return {\n outDir: relative(projectRoot, options.outputPath),\n emptyOutDir: options.emptyOutDir,\n reportCompressedSize: true,\n cssCodeSplit: true,\n target: 'esnext',\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n sourcemap: options.sourcemap,\n minify: options.minify,\n manifest: options.manifest,\n ssrManifest: options.ssrManifest,\n ssr: options.ssr,\n watch: options.watch as BuildOptions['watch'],\n };\n}\n\n/**\n * Builds the options for the vite preview server.\n */\nexport function getVitePreviewOptions(\n options: VitePreviewServerExecutorOptions,\n context: ExecutorContext\n): PreviewOptions {\n const serverOptions: ServerOptions = {\n host: options.host,\n port: options.port,\n https: options.https,\n open: options.open,\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\nexport function getNxTargetOptions(target: string, context: ExecutorContext) {\n const targetObj = parseTargetString(target, context.projectGraph);\n return readTargetOptions(targetObj, context);\n}\n"],"names":["normalizeViteConfigFilePath","getViteServerProxyConfigPath","getViteSharedConfig","getViteServerOptions","getViteBuildOptions","getVitePreviewOptions","getNxTargetOptions","projectRoot","configFile","existsSync","joinPathFragments","undefined","nxProxyConfig","context","projectsConfigurations","projects","projectName","root","proxyConfigPath","join","options","clearScreen","path","relative","cwd","mode","base","plugins","replaceFiles","fileReplacements","optimizeDeps","force","logLevel","serverOptions","host","port","https","hmr","open","cors","fs","allow","searchForWorkspaceRoot","proxyConfig","logger","info","proxy","require","outDir","outputPath","emptyOutDir","reportCompressedSize","cssCodeSplit","target","commonjsOptions","transformMixedEsModules","sourcemap","minify","manifest","ssrManifest","ssr","watch","targetObj","parseTargetString","projectGraph","readTargetOptions"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/vite/src/utils/options-utils.ts"],"sourcesContent":["import {\n ExecutorContext,\n joinPathFragments,\n logger,\n parseTargetString,\n readTargetOptions,\n} from '@nx/devkit';\nimport { existsSync } from 'fs';\nimport { join, relative } from 'path';\nimport {\n BuildOptions,\n InlineConfig,\n PluginOption,\n PreviewOptions,\n searchForWorkspaceRoot,\n ServerOptions,\n} from 'vite';\nimport { ViteDevServerExecutorOptions } from '../executors/dev-server/schema';\nimport { VitePreviewServerExecutorOptions } from '../executors/preview-server/schema';\nimport replaceFiles from '../../plugins/rollup-replace-files.plugin';\nimport { ViteBuildExecutorOptions } from '../executors/build/schema';\nimport * as path from 'path';\n\n/**\n * Returns the path to the vite config file or undefined when not found.\n */\nexport function normalizeViteConfigFilePath(\n projectRoot: string,\n configFile?: string\n): string | undefined {\n return configFile && existsSync(joinPathFragments(configFile))\n ? configFile\n : existsSync(joinPathFragments(`${projectRoot}/vite.config.ts`))\n ? joinPathFragments(`${projectRoot}/vite.config.ts`)\n : existsSync(joinPathFragments(`${projectRoot}/vite.config.js`))\n ? joinPathFragments(`${projectRoot}/vite.config.js`)\n : undefined;\n}\n\n/**\n * Returns the path to the proxy configuration file or undefined when not found.\n */\nexport function getViteServerProxyConfigPath(\n nxProxyConfig: string | undefined,\n context: ExecutorContext\n): string | undefined {\n if (nxProxyConfig) {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const proxyConfigPath = nxProxyConfig\n ? join(context.root, nxProxyConfig)\n : join(projectRoot, 'proxy.conf.json');\n\n if (existsSync(proxyConfigPath)) {\n return proxyConfigPath;\n }\n }\n}\n\n/**\n * Builds the shared options for vite.\n *\n * Most shared options are derived from the build target.\n */\nexport function getViteSharedConfig(\n options: ViteBuildExecutorOptions,\n clearScreen: boolean | undefined,\n context: ExecutorContext\n): InlineConfig {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n const root = path.relative(\n context.cwd,\n joinPathFragments(context.root, projectRoot)\n );\n\n return {\n mode: options.mode,\n root,\n base: options.base,\n configFile: normalizeViteConfigFilePath(projectRoot, options.configFile),\n plugins: [replaceFiles(options.fileReplacements) as PluginOption],\n optimizeDeps: { force: options.force },\n clearScreen: clearScreen,\n logLevel: options.logLevel,\n };\n}\n\n/**\n * Builds the options for the vite dev server.\n */\nexport function getViteServerOptions(\n options: ViteDevServerExecutorOptions,\n context: ExecutorContext\n): ServerOptions {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n const serverOptions: ServerOptions = {\n host: options.host,\n port: options.port,\n https: options.https,\n hmr: options.hmr,\n open: options.open,\n cors: options.cors,\n fs: {\n allow: [\n searchForWorkspaceRoot(joinPathFragments(projectRoot)),\n joinPathFragments(context.root, 'node_modules/vite'),\n ],\n },\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\n/**\n * Builds the build options for the vite.\n */\nexport function getViteBuildOptions(\n options: ViteBuildExecutorOptions,\n context: ExecutorContext\n): BuildOptions {\n const projectRoot =\n context.projectsConfigurations.projects[context.projectName].root;\n\n return {\n outDir: relative(projectRoot, options.outputPath),\n emptyOutDir: options.emptyOutDir,\n reportCompressedSize: true,\n cssCodeSplit: true,\n target: options.target ?? 'esnext',\n commonjsOptions: {\n transformMixedEsModules: true,\n },\n sourcemap: options.sourcemap,\n minify: options.minify,\n manifest: options.manifest,\n ssrManifest: options.ssrManifest,\n ssr: options.ssr,\n watch: options.watch as BuildOptions['watch'],\n };\n}\n\n/**\n * Builds the options for the vite preview server.\n */\nexport function getVitePreviewOptions(\n options: VitePreviewServerExecutorOptions,\n context: ExecutorContext\n): PreviewOptions {\n const serverOptions: ServerOptions = {\n host: options.host,\n port: options.port,\n https: options.https,\n open: options.open,\n };\n\n const proxyConfigPath = getViteServerProxyConfigPath(\n options.proxyConfig,\n context\n );\n if (proxyConfigPath) {\n logger.info(`Loading proxy configuration from: ${proxyConfigPath}`);\n serverOptions.proxy = require(proxyConfigPath);\n }\n\n return serverOptions;\n}\n\nexport function getNxTargetOptions(target: string, context: ExecutorContext) {\n const targetObj = parseTargetString(target, context.projectGraph);\n return readTargetOptions(targetObj, context);\n}\n"],"names":["normalizeViteConfigFilePath","getViteServerProxyConfigPath","getViteSharedConfig","getViteServerOptions","getViteBuildOptions","getVitePreviewOptions","getNxTargetOptions","projectRoot","configFile","existsSync","joinPathFragments","undefined","nxProxyConfig","context","projectsConfigurations","projects","projectName","root","proxyConfigPath","join","options","clearScreen","path","relative","cwd","mode","base","plugins","replaceFiles","fileReplacements","optimizeDeps","force","logLevel","serverOptions","host","port","https","hmr","open","cors","fs","allow","searchForWorkspaceRoot","proxyConfig","logger","info","proxy","require","outDir","outputPath","emptyOutDir","reportCompressedSize","cssCodeSplit","target","commonjsOptions","transformMixedEsModules","sourcemap","minify","manifest","ssrManifest","ssr","watch","targetObj","parseTargetString","projectGraph","readTargetOptions"],"mappings":"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"}