UNPKG

@ionic/cordova-builders

Version:

Cordova builders for @ionic/angular apps

65 lines (64 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.indexHtmlTransformFactory = void 0; exports.serveCordova = serveCordova; const architect_1 = require("@angular-devkit/architect"); const build_angular_1 = require("@angular-devkit/build-angular"); const plugins_1 = require("@angular-devkit/build-angular/src/tools/webpack/plugins"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const path_1 = require("path"); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const utils_1 = require("../utils"); const append_scripts_1 = require("../utils/append-scripts"); const log_server_1 = require("./log-server"); function serveCordova(options, context) { const { devServerTarget, port, host, ssl } = options; const root = context.workspaceRoot; const devServerTargetSpec = (0, architect_1.targetFromTargetString)(devServerTarget); async function setup() { const devServerTargetOptions = await context.getTargetOptions(devServerTargetSpec); const devServerName = await context.getBuilderNameForTarget(devServerTargetSpec); devServerTargetOptions.port = port; devServerTargetOptions.host = host; devServerTargetOptions.ssl = ssl; const formattedOptions = await context.validateOptions(devServerTargetOptions, devServerName); const formattedAssets = (0, utils_1.prepareServerConfig)(options, root); if (options.consolelogs && options.consolelogsPort) { await (0, log_server_1.createConsoleLogServer)(host, options.consolelogsPort); } return { formattedOptions, formattedAssets }; } return (0, rxjs_1.from)(setup()).pipe((0, operators_1.switchMap)(({ formattedOptions, formattedAssets }) => (0, build_angular_1.executeDevServerBuilder)(formattedOptions, context, getTransforms(formattedAssets, context)))); } exports.default = (0, architect_1.createBuilder)(serveCordova); function getTransforms(formattedAssets, context) { return { webpackConfiguration: cordovaServeTransform(formattedAssets, context), indexHtml: (0, exports.indexHtmlTransformFactory)(formattedAssets, context), }; } const cordovaServeTransform = (formattedAssets, { workspaceRoot }) => (browserWebpackConfig) => { var _a; const scriptExtras = formattedAssets.globalScriptsByBundleName.map((script) => { const bundleName = script.bundleName; return new plugins_1.ScriptsWebpackPlugin({ name: bundleName, sourceMap: true, filename: `${(0, path_1.basename)(bundleName)}.js`, scripts: script.paths, basePath: workspaceRoot, }); }); const copyWebpackPluginInstance = new CopyWebpackPlugin({ patterns: formattedAssets.copyWebpackPluginPatterns, }); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (_a = browserWebpackConfig.plugins) === null || _a === void 0 ? void 0 : _a.push(...scriptExtras, copyWebpackPluginInstance); return browserWebpackConfig; }; const indexHtmlTransformFactory = ({ globalScriptsByBundleName }) => (indexTransform) => { const augmentedHtml = (0, append_scripts_1.augmentIndexHtml)(indexTransform, globalScriptsByBundleName); return Promise.resolve(augmentedHtml); }; exports.indexHtmlTransformFactory = indexHtmlTransformFactory;