@ionic/cordova-builders
Version:
Cordova builders for @ionic/angular apps
65 lines (64 loc) • 3.38 kB
JavaScript
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;
;