UNPKG

@berenddeboer/nx-sst

Version:
113 lines 4.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addLint = void 0; const devkit_1 = require("@nx/devkit"); const versions_1 = require("../../utils/versions"); const path = require("path"); const init_1 = require("../init/init"); const path_1 = require("path"); const linter_1 = require("@nx/linter"); function normalizeOptions(host, options) { const name = (0, devkit_1.names)(options.name).fileName; const projectDirectory = options.directory ? `${(0, devkit_1.names)(options.directory).fileName}/${name}` : name; const projectName = projectDirectory.replace(new RegExp("/", "g"), "-"); const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(host).appsDir}/${projectDirectory}`; const parsedTags = options.tags ? options.tags.split(",").map((s) => s.trim()) : []; return { ...options, projectName, projectRoot, projectDirectory, parsedTags, }; } function addFiles(host, options) { const templateOptions = { ...options, ...(0, devkit_1.names)(options.name), offsetFromRoot: (0, devkit_1.offsetFromRoot)(options.projectRoot), template: "", dot: ".", }; const packageJsonPath = (0, path_1.join)(options.projectRoot, "package.json"); (0, devkit_1.writeJson)(host, packageJsonPath, { name: options.name, scripts: { sst: "sst", }, }); (0, devkit_1.generateFiles)(host, path.join(__dirname, "files"), options.projectRoot, templateOptions); } async function default_1(tree, schema) { const tasks = []; tasks.push(await (0, init_1.default)(tree, { ...schema, skipFormat: true, })); const options = normalizeOptions(tree, schema); const runTarget = (options) => ({ executor: "@berenddeboer/nx-sst:sst", options, }); (0, devkit_1.addProjectConfiguration)(tree, options.projectName, { root: options.projectRoot, projectType: "application", targets: { dev: runTarget({ command: "dev" }), diff: runTarget({ command: "diff" }), build: { ...runTarget({ command: "build" }), outputs: [`${options.projectRoot}/.sst`], }, deploy: runTarget({ command: "deploy" }), remove: runTarget({ command: "remove" }), }, tags: options.parsedTags, }); addFiles(tree, options); if (options.linter !== linter_1.Linter.None) { const lintCallback = await addLint(tree, options); tasks.push(lintCallback); } if (options.unitTestRunner === "jest") { const { jestProjectGenerator } = (0, devkit_1.ensurePackage)("@nx/jest", versions_1.nxVersion); const jestTask = await jestProjectGenerator(tree, { project: options.name, supportTsx: true, skipSerializers: true, setupFile: "none", babelJest: true, }); tasks.push(jestTask); } else if (options.unitTestRunner === "vitest") { const { vitestGenerator } = (0, devkit_1.ensurePackage)("@nx/vite", versions_1.nxVersion); const vitestTask = await vitestGenerator(tree, { project: options.name, uiFramework: "none", coverageProvider: "v8", skipFormat: true, }); tasks.push(vitestTask); } if (!options.skipFormat) { await (0, devkit_1.formatFiles)(tree); } return (0, devkit_1.runTasksInSerial)(...tasks); } exports.default = default_1; async function addLint(tree, options) { return (0, linter_1.lintProjectGenerator)(tree, { project: options.projectName, linter: options.linter, skipFormat: true, tsConfigPaths: [(0, devkit_1.joinPathFragments)(options.projectRoot, "tsconfig.lib.json")], unitTestRunner: options.unitTestRunner, eslintFilePatterns: [`${options.projectRoot}/**/*.ts`], setParserOptionsProject: options.setParserOptionsProject, }); } exports.addLint = addLint; //# sourceMappingURL=generator.js.map