@nstudio/schematics
Version:
Cross-platform (xplat) tools for Nx workspaces.
69 lines • 2.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const schematics_1 = require("@angular-devkit/schematics");
const utils_1 = require("../utils");
function default_1(options) {
return schematics_1.chain([
updatePaths(options),
]);
}
exports.default = default_1;
;
function updatePaths(options) {
return (tree) => {
const nxJson = utils_1.getNxWorkspaceConfig(tree);
const npmScope = nxJson.npmScope;
const platformArg = options.platforms;
// sort for consistency
const platforms = utils_1.sanitizeCommaDelimitedArg(platformArg).sort(function (a, b) {
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
});
if ((platforms.includes('ionic') || platforms.includes('electron')) && !platforms.includes('web')) {
// ensure web is added since these platforms depend on it
platforms.push('web');
}
const updates = {};
// ensure default Nx libs path is in place
updates[`@${npmScope}/*`] = [
`libs/*`
];
for (const t of platforms) {
if (utils_1.supportedPlatforms.includes(t)) {
updates[`@${npmScope}/${t}`] = [
`xplat/${t}/index.ts`
];
updates[`@${npmScope}/${t}/*`] = [
`xplat/${t}/*`
];
}
else {
throw new Error(`${t} is not a supported platform. Currently supported: ${utils_1.supportedPlatforms}`);
}
}
return utils_1.updateTsConfig(tree, (tsConfig) => {
if (tsConfig) {
if (!tsConfig.compilerOptions) {
tsConfig.compilerOptions = {};
}
tsConfig.compilerOptions.paths = Object.assign({}, (tsConfig.compilerOptions.paths || {}), updates);
}
});
};
}
// function updateSpecExcludes() {
// return ( tree: Tree ) => {
// return updateTsConfig(tree, (tsConfig: any) => {
// if (tsConfig) {
// if (!tsConfig.exclude) {
// tsConfig.exclude = [];
// }
// tsConfig.exclude.push('apps/nativescript-*');
// }
// }, 'spec');
// }
// }
//# sourceMappingURL=index.js.map
;