UNPKG

@robby-rabbitman/nx-plus-web-dev-server

Version:
85 lines 3.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DEFAULT_WEB_DEV_SERVER_TARGET_NAME = exports.createNodesV2 = void 0; const devkit_1 = require("@nx/devkit"); const fs_1 = require("fs"); const path_1 = require("path"); /** * The glob pattern to match `Web Dev Server` configuration files. * * https://modern-web.dev/docs/dev-server/cli-and-configuration/#configuration-file */ const WEB_DEV_SERVER_CONFIG_FILE_NAME_GLOB = '**/@(web-dev-server|wds).config.@(js|cjs|mjs)'; const WEB_DEV_SERVER_COMMAND = 'web-dev-server'; exports.createNodesV2 = [ WEB_DEV_SERVER_CONFIG_FILE_NAME_GLOB, (webDevServerConfigPaths, options, context) => { return (0, devkit_1.createNodesFromFiles)(createWebDevServerTarget, webDevServerConfigPaths, options, context); }, ]; exports.DEFAULT_WEB_DEV_SERVER_TARGET_NAME = 'serve'; const createWebDevServerTarget = (webDevServerConfigPath, userOptions, context) => { const options = normalizeWebDevServerOptions(userOptions); const { serveTargetName, serveTargetConfig } = options; const webDevServerInformation = extractWebDevServerInformation(webDevServerConfigPath, context.workspaceRoot); if (!webDevServerInformation.isProject) { return {}; } /** * TODO: '@web/dev-server' does not export the `DevServerCliArgs` type - add * it when its exported from their public api. * * https://github.com/modernweb-dev/web/blob/17cfc0d70f46b321912e4506b2cccae1b16b1534/packages/dev-server/src/config/readCliArgs.ts#L6-L20 */ const webDevServerDefaultCliArgs = { config: webDevServerInformation.configFileName, watch: true, }; const webDevServerTargetConfiguration = { command: WEB_DEV_SERVER_COMMAND, ...serveTargetConfig, options: { cwd: webDevServerInformation.configDir, ...webDevServerDefaultCliArgs, ...serveTargetConfig.options, }, }; return { projects: { [webDevServerInformation.configDir]: { targets: { [serveTargetName]: webDevServerTargetConfiguration, }, }, }, }; }; function normalizeWebDevServerOptions(userOptions) { const normalizedOptions = { serveTargetName: exports.DEFAULT_WEB_DEV_SERVER_TARGET_NAME, serveTargetConfig: {}, ...userOptions, }; /** Make sure `serveTargetName` is not an empty string */ if (normalizedOptions.serveTargetName === '') { normalizedOptions.serveTargetName = exports.DEFAULT_WEB_DEV_SERVER_TARGET_NAME; } return normalizedOptions; } function extractWebDevServerInformation(webDevServerConfigPath, workspaceRoot) { const configDir = (0, path_1.dirname)(webDevServerConfigPath); return { configFileName: (0, path_1.basename)(webDevServerConfigPath), configDir, isProject: isProject(configDir, workspaceRoot), }; } /** * Returns true if the directory contains a `project.json` or `package.json` * file. */ function isProject(directory, workspaceRoot) { return ((0, fs_1.existsSync)((0, path_1.join)(workspaceRoot, directory, 'project.json')) || (0, fs_1.existsSync)((0, path_1.join)(workspaceRoot, directory, 'package.json'))); } //# sourceMappingURL=web-dev-server.plugin.js.map