@angular-devkit/build-angular
Version:
Angular Webpack Build Facade
83 lines (82 loc) • 3.16 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.i18nInlineEmittedFiles = void 0;
const fs = require("fs");
const path = require("path");
const action_executor_1 = require("./action-executor");
const copy_assets_1 = require("./copy-assets");
function emittedFilesToInlineOptions(emittedFiles, scriptsEntryPointName, emittedPath, outputPath, es5, missingTranslation) {
const options = [];
const originalFiles = [];
for (const emittedFile of emittedFiles) {
if (emittedFile.asset ||
emittedFile.extension !== '.js' ||
(emittedFile.name && scriptsEntryPointName.includes(emittedFile.name))) {
continue;
}
const originalPath = path.join(emittedPath, emittedFile.file);
const action = {
filename: emittedFile.file,
code: fs.readFileSync(originalPath, 'utf8'),
es5,
outputPath,
missingTranslation,
setLocale: emittedFile.name === 'main' || emittedFile.name === 'vendor',
};
originalFiles.push(originalPath);
try {
const originalMapPath = originalPath + '.map';
action.map = fs.readFileSync(originalMapPath, 'utf8');
originalFiles.push(originalMapPath);
}
catch (err) {
if (err.code !== 'ENOENT') {
throw err;
}
}
options.push(action);
}
return { options, originalFiles };
}
async function i18nInlineEmittedFiles(context, emittedFiles, i18n, baseOutputPath, outputPaths, scriptsEntryPointName, emittedPath, es5, missingTranslation) {
const executor = new action_executor_1.BundleActionExecutor({ i18n });
let hasErrors = false;
try {
const { options, originalFiles: processedFiles } = emittedFilesToInlineOptions(emittedFiles, scriptsEntryPointName, emittedPath, baseOutputPath, es5, missingTranslation);
for await (const result of executor.inlineAll(options)) {
for (const diagnostic of result.diagnostics) {
if (diagnostic.type === 'error') {
hasErrors = true;
context.logger.error(diagnostic.message);
}
else {
context.logger.warn(diagnostic.message);
}
}
}
// Copy any non-processed files into the output locations
await copy_assets_1.copyAssets([
{
glob: '**/*',
input: emittedPath,
output: '',
ignore: [...processedFiles].map(f => path.relative(emittedPath, f)),
},
], outputPaths, '');
}
catch (err) {
context.logger.error('Localized bundle generation failed: ' + err.message);
return false;
}
finally {
executor.stop();
}
if (hasErrors) {
context.logger.error('Localized bundle generation failed.');
}
else {
context.logger.info('Localized bundle generation complete.');
}
return !hasErrors;
}
exports.i18nInlineEmittedFiles = i18nInlineEmittedFiles;
;