UNPKG

@nxext/stencil

Version:

Nx plugin for stenciljs

91 lines (90 loc) 5.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applicationGenerator = applicationGenerator; const tslib_1 = require("tslib"); const typings_1 = require("./../../utils/typings"); const devkit_1 = require("@nx/devkit"); const js_1 = require("@nx/js"); const utillities_1 = require("../../utils/utillities"); const init_1 = require("../init/init"); const path_1 = require("path"); const node_os_1 = require("node:os"); const add_project_1 = require("./lib/add-project"); const add_linting_1 = require("./lib/add-linting"); const add_cypress_1 = require("./lib/add-cypress"); 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 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, _b, _c, _d, _e, _f; yield (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'application'); const { projectName, projectRoot } = yield (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, { name: options.name, projectType: 'application', directory: options.directory, }); (_a = options.name) !== null && _a !== void 0 ? _a : (options.name = projectName); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; const nxJson = (0, devkit_1.readNxJson)(host); let e2eWebServerTarget = 'serve'; let e2ePort = 4200; if (((_b = nxJson.targetDefaults) === null || _b === void 0 ? void 0 : _b[e2eWebServerTarget]) && ((_d = (_c = nxJson.targetDefaults) === null || _c === void 0 ? void 0 : _c[e2eWebServerTarget].options) === null || _d === void 0 ? void 0 : _d.port)) { e2ePort = (_f = (_e = nxJson.targetDefaults) === null || _e === void 0 ? void 0 : _e[e2eWebServerTarget].options) === null || _f === void 0 ? void 0 : _f.port; } const e2eProjectName = `${projectName}-e2e`; const e2eProjectRoot = `${projectRoot}-e2e`; const e2eWebServerAddress = `http://localhost:${e2ePort}`; const style = (0, utillities_1.calculateStyle)(options.style); const appType = typings_1.AppType.application; return Object.assign(Object.assign({}, options), { name: projectName, projectName, projectRoot, projectDirectory: projectRoot, parsedTags, e2eProjectName, e2eProjectRoot, e2eWebServerAddress, e2eWebServerTarget, style, appType }); }); } function createFiles(host, options) { (0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, './files/app'), 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/app-home/app-home.spec.ts`); host.delete(`${options.projectRoot}/src/components/app-root/app-root.spec.ts`); host.delete(`${options.projectRoot}/src/components/app-profile/app-profile.spec.ts`); } } function applicationGenerator(host, schema) { return tslib_1.__awaiter(this, void 0, void 0, function* () { (0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(host, '@nxext/stencil', 'application'); const options = yield normalizeOptions(host, schema); 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, Object.assign(Object.assign({}, options), { skipFormat: true })); createFiles(host, options); (0, add_project_1.addProject)(host, options); const lintTask = yield (0, add_linting_1.addLinting)(host, options); const cypressTask = yield (0, add_cypress_1.addCypress)(host, options); const ignoresToUpdate = ['.gitignore', '.prettierignore', '.nxignore']; const toBeIgnored = ['.stencil'].join(node_os_1.EOL); ignoresToUpdate.forEach((ignoreFile) => { if (host.exists(ignoreFile)) { const gitignoreContent = host.read(ignoreFile, 'utf-8'); if (!gitignoreContent.includes('.stencil')) { host.write(ignoreFile, `${gitignoreContent} ${toBeIgnored} `); } } }); if (!options.skipFormat) { yield (0, devkit_1.formatFiles)(host); } return (0, devkit_1.runTasksInSerial)(jsInitTask, initTask, lintTask, cypressTask, () => (0, log_show_project_command_1.logShowProjectCommand)(options.projectName)); }); } exports.default = applicationGenerator; //# sourceMappingURL=generator.js.map