UNPKG

@nx/nuxt

Version:

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

112 lines (111 loc) 4.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addE2e = addE2e; const devkit_1 = require("@nx/devkit"); const e2e_web_server_info_utils_1 = require("@nx/devkit/src/generators/e2e-web-server-info-utils"); const versions_1 = require("../../../utils/versions"); async function addE2e(host, options) { const e2eWebServerInfo = await getNuxtE2EWebServerInfo(host, options.projectName, (0, devkit_1.joinPathFragments)(options.appProjectRoot, `nuxt.config.${options.js ? 'js' : 'ts'}`)); if (options.e2eTestRunner === 'cypress') { const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion); const packageJson = { name: options.e2eProjectName, version: '0.0.1', private: true, }; if (!options.useProjectJson) { packageJson.nx = { implicitDependencies: [options.projectName], }; } else { (0, devkit_1.addProjectConfiguration)(host, options.e2eProjectName, { projectType: 'application', root: options.e2eProjectRoot, sourceRoot: (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'src'), targets: {}, tags: [], implicitDependencies: [options.projectName], }); } if (!options.useProjectJson || options.isUsingTsSolutionConfig) { (0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'package.json'), packageJson); } const e2eTask = await configurationGenerator(host, { ...options, project: options.e2eProjectName, directory: 'src', bundler: 'vite', skipFormat: true, devServerTarget: e2eWebServerInfo.e2eDevServerTarget, webServerCommands: { default: e2eWebServerInfo.e2eWebServerCommand, }, ciWebServerCommand: e2eWebServerInfo.e2eCiWebServerCommand, baseUrl: e2eWebServerInfo.e2eWebServerAddress, ciBaseUrl: e2eWebServerInfo.e2eCiBaseUrl, jsx: true, addPlugin: true, }); return e2eTask; } else if (options.e2eTestRunner === 'playwright') { const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/playwright', versions_1.nxVersion); const packageJson = { name: options.e2eProjectName, version: '0.0.1', private: true, }; if (!options.useProjectJson) { packageJson.nx = { implicitDependencies: [options.projectName], }; } else { (0, devkit_1.addProjectConfiguration)(host, options.e2eProjectName, { projectType: 'application', root: options.e2eProjectRoot, sourceRoot: (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'src'), targets: {}, implicitDependencies: [options.projectName], }); } if (!options.useProjectJson || options.isUsingTsSolutionConfig) { (0, devkit_1.writeJson)(host, (0, devkit_1.joinPathFragments)(options.e2eProjectRoot, 'package.json'), packageJson); } const e2eTask = await configurationGenerator(host, { project: options.e2eProjectName, skipFormat: true, skipPackageJson: options.skipPackageJson, directory: 'src', js: false, linter: options.linter, setParserOptionsProject: options.setParserOptionsProject, webServerAddress: e2eWebServerInfo.e2eCiBaseUrl, webServerCommand: e2eWebServerInfo.e2eCiWebServerCommand, addPlugin: true, }); return e2eTask; } return () => { }; } async function getNuxtE2EWebServerInfo(tree, projectName, configFilePath) { const nxJson = (0, devkit_1.readNxJson)(tree); let e2ePort = 4200; if (nxJson.targetDefaults?.['serve'] && nxJson.targetDefaults?.['serve'].options?.port) { e2ePort = nxJson.targetDefaults?.['serve'].options?.port; } return (0, e2e_web_server_info_utils_1.getE2EWebServerInfo)(tree, projectName, { plugin: '@nx/nuxt/plugin', serveTargetName: 'serveTargetName', serveStaticTargetName: 'serveStaticTargetName', configFilePath, }, { defaultServeTargetName: 'serve', defaultServeStaticTargetName: 'serve-static', defaultE2EWebServerAddress: `http://localhost:${e2ePort}`, defaultE2ECiBaseUrl: 'http://localhost:4200', defaultE2EPort: e2ePort, }, true); }