UNPKG

@nxext/stencil

Version:

Nx plugin for stenciljs

74 lines 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.libraryGenerator = libraryGenerator; const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const typings_1 = require("../../utils/typings"); const utillities_1 = require("../../utils/utillities"); const init_1 = require("../../generators/init/init"); const update_tsconfig_1 = require("./lib/update-tsconfig"); const add_project_1 = require("./lib/add-project"); const make_lib_buildable_1 = require("../../generators/make-lib-buildable/make-lib-buildable"); const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils"); const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup"); const js_1 = require("@nx/js"); const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command"); function normalizeOptions(host, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { var _a; yield (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'library'); const { projectName, names: projectNames, projectRoot, importPath, } = yield (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, { name: options.name, projectType: 'library', directory: options.directory, importPath: options.importPath, }); (_a = options.name) !== null && _a !== void 0 ? _a : (options.name = projectName); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; const style = (0, utillities_1.calculateStyle)(options.style); const appType = typings_1.AppType.library; return Object.assign(Object.assign({}, options), { projectName, projectRoot, projectDirectory: projectRoot, parsedTags, style, appType, importPath }); }); } function createFiles(host, options) { (0, devkit_1.generateFiles)(host, (0, devkit_1.joinPathFragments)(__dirname, './files/lib'), options.projectRoot, Object.assign(Object.assign(Object.assign({}, options), (0, devkit_1.names)(options.name)), { offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot) })); if (options.unitTestRunner === 'none') { host.delete(`${options.projectRoot}/src/components/my-component/my-component.spec.ts`); } if (!options.component) { host.delete(`${options.projectRoot}/src/components/my-component`); } } function libraryGenerator(host, schema) { return tslib_1.__awaiter(this, void 0, void 0, function* () { (0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(host, '@nxext/stencil', 'library'); const options = yield normalizeOptions(host, schema); if (options.publishable === true && !options.importPath) { throw new Error(`For publishable libs you have to provide a proper "--importPath" which needs to be a valid npm package name (e.g. my-awesome-lib or @myorg/my-lib)`); } const jsInitTask = yield (0, js_1.initGenerator)(host, Object.assign(Object.assign({}, options), { tsConfigName: 'tsconfig.base.json', skipFormat: true })); const initTask = yield (0, init_1.initGenerator)(host, options); (0, add_project_1.addProject)(host, options); createFiles(host, options); (0, update_tsconfig_1.updateTsConfig)(host, options); if (options.buildable || options.publishable) { yield (0, make_lib_buildable_1.makeLibBuildableGenerator)(host, { name: options.projectName, importPath: options.importPath, style: options.style, }); } if (!options.skipFormat) { yield (0, devkit_1.formatFiles)(host); } return (0, devkit_1.runTasksInSerial)(jsInitTask, initTask, () => (0, log_show_project_command_1.logShowProjectCommand)(options.projectName)); }); } exports.default = libraryGenerator; //# sourceMappingURL=generator.js.map