UNPKG

@angular-devkit/build-angular

Version:
90 lines (89 loc) 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBrowserConfig = void 0; const webpack_version_1 = require("../../utils/webpack-version"); const plugins_1 = require("../plugins"); const helpers_1 = require("../utils/helpers"); function getBrowserConfig(wco) { const { buildOptions } = wco; const { crossOrigin = 'none', subresourceIntegrity, extractLicenses, vendorChunk, commonChunk, allowedCommonJsDependencies, } = buildOptions; const extraPlugins = []; const { styles: stylesSourceMap, scripts: scriptsSourceMap, hidden: hiddenSourceMap, vendor: vendorSourceMap, } = buildOptions.sourceMap; if (subresourceIntegrity) { const SubresourceIntegrityPlugin = require('webpack-subresource-integrity'); extraPlugins.push(new SubresourceIntegrityPlugin({ hashFuncNames: ['sha384'], })); } // TODO_WEBPACK_5: Investigate build/serve issues with the `license-webpack-plugin` package if (extractLicenses && webpack_version_1.isWebpackFiveOrHigher()) { wco.logger.warn('Warning: License extraction is currently disabled when using Webpack 5. ' + 'This is temporary and will be corrected in a future update.'); } else if (extractLicenses) { const LicenseWebpackPlugin = require('license-webpack-plugin').LicenseWebpackPlugin; extraPlugins.push(new LicenseWebpackPlugin({ stats: { warnings: false, errors: false, }, perChunkOutput: false, outputFilename: '3rdpartylicenses.txt', })); } if (scriptsSourceMap || stylesSourceMap) { extraPlugins.push(helpers_1.getSourceMapDevTool(scriptsSourceMap, stylesSourceMap, wco.differentialLoadingMode ? true : hiddenSourceMap, false, vendorSourceMap)); } let crossOriginLoading = false; if (subresourceIntegrity && crossOrigin === 'none') { crossOriginLoading = 'anonymous'; } else if (crossOrigin !== 'none') { crossOriginLoading = crossOrigin; } return { devtool: false, resolve: { mainFields: ['es2015', 'browser', 'module', 'main'], }, ...webpack_version_1.withWebpackFourOrFive({}, { target: ['web', 'es5'] }), output: { crossOriginLoading, }, optimization: { runtimeChunk: 'single', splitChunks: { maxAsyncRequests: Infinity, cacheGroups: { default: !!commonChunk && { chunks: 'async', minChunks: 2, priority: 10, }, common: !!commonChunk && { name: 'common', chunks: 'async', minChunks: 2, enforce: true, priority: 5, }, vendors: false, defaultVendors: !!vendorChunk && { name: 'vendor', chunks: (chunk) => chunk.name === 'main', enforce: true, test: /[\\/]node_modules[\\/]/, }, }, }, }, plugins: [ new plugins_1.CommonJsUsageWarnPlugin({ allowedDependencies: allowedCommonJsDependencies, }), ...extraPlugins, ], node: false, }; } exports.getBrowserConfig = getBrowserConfig;