ngx-library-assets
Version:
Angular builders to include assets from libraries into applications
78 lines • 3.83 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.extendAssets = void 0;
var core_1 = require("@angular-devkit/core");
var node_1 = require("@angular-devkit/core/node");
var fs = require("fs");
var path = require("path");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
function getWorkspace(context) {
return core_1.workspaces.readWorkspace(core_1.normalize(context.workspaceRoot), core_1.workspaces.createWorkspaceHost(new node_1.NodeJsSyncHost()), core_1.workspaces.WorkspaceFormat.JSON).then(function (v) { return v.workspace; });
}
function extendAssets(options, context) {
return rxjs_1.from(getWorkspace(context))
.pipe(operators_1.map(function (workspace) {
var projectName = context.target ? context.target.project : workspace.extensions['defaultProject'];
var projectRoot = core_1.normalize(workspace.projects.get(projectName).root);
var includeFilePath = core_1.getSystemPath(core_1.normalize(path.join(projectRoot, core_1.normalize('src/assets/include.json'))));
var newOptions = __assign({}, options);
if (fs.existsSync(includeFilePath)) {
context.logger.info('Found include.json file, adding content to assets');
try {
var assets = JSON.parse(fs.readFileSync(includeFilePath, 'utf-8'));
newOptions = __assign(__assign({}, options), { assets: options.assets.concat(assets.libs
.filter(function (library) {
if (!Array.from(workspace.projects.keys()).includes(library.name)) {
context.logger.warn("WARN: A project named '" + library.name + "' does not exist in this workspace.");
return false;
}
else {
return true;
}
})
.map(function (library) {
var libraryRoot = workspace.projects.get(library.name).sourceRoot;
var subFolder = !library.assetsRoot ? "/" + library.name : '';
context.logger.info("Adding library " + library.name + " (" + libraryRoot + "/assets -> ./assets" + subFolder + ")");
return [
{
glob: '**/*',
input: "./" + libraryRoot + "/assets/i18n",
output: "./assets/" + library.name + "/i18n"
},
{
glob: '**/*',
input: "./" + libraryRoot + "/assets",
output: "./assets" + subFolder,
ignore: ['i18n/**/*']
}
];
})
.reduce(function (x, c) { return x.concat(c); }, [])) });
}
catch (e) {
context.logger.error("The file " + includeFilePath + " is incorrectly formatted.");
context.logger.error(e);
}
}
else {
context.logger.info('No include.json file found.');
}
return newOptions;
}))
.toPromise();
}
exports.extendAssets = extendAssets;
//# sourceMappingURL=extend-assets.js.map