UNPKG

@nx/react

Version:

The React plugin for Nx contains executors and generators for managing React applications and libraries within an Nx workspace. It provides: - Integration with libraries such as Jest, Vitest, Playwright, Cypress, and Storybook. - Generators for applica

77 lines (76 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupViteConfiguration = setupViteConfiguration; exports.setupVitestConfiguration = setupVitestConfiguration; const devkit_1 = require("@nx/devkit"); const versions_1 = require("../../../../utils/versions"); async function setupViteConfiguration(tree, options, tasks) { const { createOrEditViteConfig, viteConfigurationGenerator } = (0, devkit_1.ensurePackage)('@nx/vite', versions_1.nxVersion); // We recommend users use `import.meta.env.MODE` and other variables in their code to differentiate between production and development. // See: https://vitejs.dev/guide/env-and-mode.html if (tree.exists((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'src/environments'))) { tree.delete((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'src/environments')); } const reactRouterFrameworkConfig = { imports: [`import { reactRouter } from '@react-router/dev/vite'`], plugins: ['!process.env.VITEST && reactRouter()'], }; const baseReactConfig = { imports: [ options.compiler === 'swc' ? `import react from '@vitejs/plugin-react-swc'` : `import react from '@vitejs/plugin-react'`, ], plugins: ['react()'], }; const viteTask = await viteConfigurationGenerator(tree, { uiFramework: 'react', project: options.projectName, newProject: true, includeVitest: options.unitTestRunner === 'vitest', inSourceTests: options.inSourceTests, compiler: options.compiler, skipFormat: true, addPlugin: options.addPlugin, projectType: 'application', }); tasks.push(viteTask); createOrEditViteConfig(tree, { project: options.projectName, includeLib: false, includeVitest: options.unitTestRunner === 'vitest', inSourceTests: options.inSourceTests, rollupOptionsExternal: ["'react'", "'react-dom'", "'react/jsx-runtime'"], ...(options.useReactRouter ? reactRouterFrameworkConfig : baseReactConfig), }, false); } async function setupVitestConfiguration(tree, options, tasks) { const { createOrEditViteConfig, vitestGenerator } = (0, devkit_1.ensurePackage)('@nx/vite', versions_1.nxVersion); const vitestTask = await vitestGenerator(tree, { uiFramework: 'react', coverageProvider: 'v8', project: options.projectName, inSourceTests: options.inSourceTests, skipFormat: true, addPlugin: options.addPlugin, }); tasks.push(vitestTask); createOrEditViteConfig(tree, { project: options.projectName, includeLib: false, includeVitest: true, inSourceTests: options.inSourceTests, rollupOptionsExternal: ["'react'", "'react-dom'", "'react/jsx-runtime'"], imports: [ options.compiler === 'swc' ? `import react from '@vitejs/plugin-react-swc'` : `import react from '@vitejs/plugin-react'`, ], plugins: ['react()'], }, true); if (options.bundler === 'rsbuild') { tree.rename((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'vite.config.ts'), (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'vitest.config.ts')); } }