UNPKG

@o3r/core

Version:
81 lines 4.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ngAddCreate = exports.updateTemplates = void 0; const fs = require("node:fs"); const path = require("node:path"); const schematics_1 = require("@angular-devkit/schematics"); const schematics_2 = require("@o3r/schematics"); /** * Rule factory to include `ng add` skeleton * @param options */ function updateTemplatesFn(options) { const targetPath = options.path ? path.posix.join('/', options.path) : '/'; const packageJsonPath = path.posix.join(targetPath, 'package.json'); return (tree, context) => { // register scripts if (tree.exists(packageJsonPath)) { const packageJson = JSON.parse(tree.read(packageJsonPath).toString()); if (!packageJson.devDependencies?.['@angular/cli'] && !packageJson.devDependencies?.['@angular/core']) { context.logger.info('You are not in an angular project. Ng add skeleton creation aborted.'); return tree; } const o3rCorePackageJsonPath = path.resolve(__dirname, '..', '..', 'package.json'); const o3rCorePackageJson = JSON.parse(fs.readFileSync(o3rCorePackageJsonPath).toString()); // prepare needed deps for schematics const angularVersion = packageJson.devDependencies?.['@angular/cli'] || packageJson.devDependencies?.['@angular/core']; const otterVersion = o3rCorePackageJson.dependencies['@o3r/schematics']; const exec = (0, schematics_2.getPackageManagerExecutor)(); packageJson.scripts ||= {}; packageJson.scripts['build:schematics'] = `tsc -b tsconfig.builders.json --pretty && ${exec} cpy 'schematics/**/*.json' dist/schematics && ${exec} cpy collection.json dist`; packageJson.schematics = './collection.json'; packageJson.peerDependencies ||= {}; packageJson.peerDependencies['@angular-devkit/schematics'] = angularVersion; packageJson.peerDependencies['@angular-devkit/core'] = angularVersion; packageJson.peerDependencies['@o3r/schematics'] = otterVersion; packageJson.peerDependenciesMeta ||= {}; packageJson.peerDependenciesMeta['@angular-devkit/schematics'] = { optional: true }; packageJson.peerDependenciesMeta['@angular-devkit/core'] = { optional: true }; packageJson.peerDependenciesMeta['@schematics/angular'] = { optional: true }; packageJson.peerDependenciesMeta['@o3r/schematics'] = { optional: true }; packageJson.devDependencies['@angular-devkit/schematics'] = angularVersion; packageJson.devDependencies['@angular-devkit/core'] = angularVersion; packageJson.devDependencies['cpy-cli'] = o3rCorePackageJson.generatorDependencies['cpy-cli']; packageJson.dependencies ||= {}; packageJson.dependencies['@o3r/schematics'] = otterVersion; tree.overwrite(packageJsonPath, JSON.stringify(packageJson, null, 2)); } // generate skeleton const featureName = options.name || path.basename(process.cwd()); const templateSource = (0, schematics_1.apply)((0, schematics_1.url)('./templates'), [ (0, schematics_1.template)({ featureName, tsconfigBuildPath: (0, schematics_2.findConfigFileRelativePath)(tree, ['tsconfig.build.json', 'tsconfig.base.json', 'tsconfig.json'], targetPath) }), (0, schematics_1.renameTemplateFiles)(), (0, schematics_1.move)(targetPath) ]); const rule = (0, schematics_1.mergeWith)(templateSource, schematics_1.MergeStrategy.AllowCreationConflict); return rule(tree, context); }; } /** * Rule factory to include `ng add` skeleton * @param options */ exports.updateTemplates = (0, schematics_2.createOtterSchematic)(updateTemplatesFn); /** * add a new ngUpdate function * @param options */ function ngAddCreateFn(options) { return (0, schematics_1.chain)([ (0, exports.updateTemplates)(options) ]); } /** * add a new ngUpdate function * @param options */ exports.ngAddCreate = (0, schematics_2.createOtterSchematic)(ngAddCreateFn); //# sourceMappingURL=index.js.map