UNPKG

@nx-plus/vue

Version:
92 lines 4.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const devkit_1 = require("@nrwl/devkit"); const utils_1 = require("../../utils"); const webpack_1 = require("../../webpack"); // eslint-disable-next-line @typescript-eslint/no-var-requires const Service = require('@vue/cli-service/lib/Service'); // eslint-disable-next-line @typescript-eslint/no-var-requires const { resolvePkg } = require('@vue/cli-shared-utils/lib/pkg'); const devServerBuilderOverriddenKeys = [ 'mode', 'skipPlugins', 'publicPath', 'css', 'stdin', ]; function runExecutor(options, context) { return tslib_1.__asyncGenerator(this, arguments, function* runExecutor_1() { // The `css` option must be `undefined` in order for the // browser builder option to serve as the default. JSON // Schema does not support setting a default value of // `undefined`. // TODO: Handle this less obtrusively. if (options.css && options.css.extract === undefined && options.css.sourceMap === undefined && !Object.keys(options.css.loaderOptions).length) { options.css = undefined; } const browserTarget = (0, devkit_1.parseTargetString)(options.browserTarget); const rawBrowserOptions = (0, devkit_1.readTargetOptions)(browserTarget, context); const overrides = Object.entries(options) .filter(([key, val]) => val !== undefined && devServerBuilderOverriddenKeys.includes(key)) .reduce((previous, [key, val]) => (Object.assign(Object.assign({}, previous), { [key]: val })), {}); const browserOptions = Object.assign(Object.assign({}, rawBrowserOptions), overrides); const projectRoot = (0, utils_1.getProjectRoot)(context); const babelConfig = yield tslib_1.__await((0, utils_1.getBabelConfig)(projectRoot)); const inlineOptions = { chainWebpack: (config) => { (0, webpack_1.modifyIndexHtmlPath)(config, browserOptions, context); (0, webpack_1.modifyEntryPoint)(config, browserOptions, context); (0, webpack_1.modifyTsConfigPaths)(config, browserOptions, context); (0, webpack_1.modifyTypescriptAliases)(config, browserOptions, context); if (babelConfig) { (0, webpack_1.modifyBabelLoader)(config, babelConfig); } if (!options.watch) { // There is no option to disable file watching in `webpack-dev-server`, // but webpack's file watcher can be overriden. config.plugin('vue-cli').use({ apply: (compiler) => { compiler.hooks.afterEnvironment.tap('vue-cli', () => { // eslint-disable-next-line @typescript-eslint/no-empty-function compiler.watchFileSystem = { watch: () => { } }; }); }, }); } }, publicPath: browserOptions.publicPath, filenameHashing: browserOptions.filenameHashing, css: browserOptions.css, configureWebpack: yield tslib_1.__await((0, utils_1.resolveConfigureWebpack)(projectRoot)), devServer: options.devServer, transpileDependencies: options.transpileDependencies, }; (0, utils_1.checkUnsupportedConfig)(context, projectRoot); const service = new Service(projectRoot, { pkg: resolvePkg(context.root), inlineOptions, }); const { url: baseUrl } = yield tslib_1.__await(service.run('serve', { open: options.open, copy: options.copy, stdin: options.stdin, mode: browserOptions.mode, host: options.host, port: options.port, https: options.https, public: options.public, transpileDependencies: options.transpileDependencies, 'skip-plugins': browserOptions.skipPlugins, }, ['serve'])); yield yield tslib_1.__await({ success: true, baseUrl }); // This Promise intentionally never resolves, leaving the process running // eslint-disable-next-line @typescript-eslint/no-empty-function yield tslib_1.__await(new Promise(() => { })); }); } exports.default = runExecutor; //# sourceMappingURL=executor.js.map