UNPKG

@storm-software/workspace-tools

Version:

Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.

251 lines (234 loc) • 9.3 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } var _chunkSZWM7COVjs = require('./chunk-SZWM7COV.js'); var _chunk7OQWJH4Bjs = require('./chunk-7OQWJH4B.js'); // src/generators/preset/generator.ts var _devkit = require('@nx/devkit'); var _path = require('path'); var path = _interopRequireWildcard(_path); async function presetGeneratorFn(tree, options) { const projectRoot = "."; options.description ??= `\u26A1The ${options.namespace ? options.namespace : options.name} monorepo contains utility applications, tools, and various libraries to create modern and scalable web applications.`; options.namespace ??= options.organization; _devkit.addProjectConfiguration.call(void 0, tree, `@${options.namespace}/${options.name}`, { root: projectRoot, projectType: "application", targets: { "local-registry": { executor: "@nx/js:verdaccio", options: { port: 4873, config: ".verdaccio/config.yml", storage: "tmp/local-registry/storage" } } } }); _devkit.updateJson.call(void 0, tree, "package.json", (json) => { json.scripts = json.scripts || {}; json.version = "0.0.0"; json.triggerEmptyDevReleaseByIncrementingThisNumber = 0; json.private = true; json.keywords ??= [ options.name, options.namespace, "storm", "storm-stack", "storm-ops", "rust", "nx", "graphql", "sullivanpj", "monorepo" ]; json.homepage ??= "https://stormsoftware.com"; json.bugs ??= { url: `https://github.com/${options.organization}/${options.name}/issues`, email: "support@stormsoftware.com" }; json.license = "Apache-2.0"; json.author ??= { name: "Storm Software", email: "contact@stormsoftware.com", url: "https://stormsoftware.com" }; json.maintainers ??= [ { name: "Storm Software", email: "contact@stormsoftware.com", url: "https://stormsoftware.com" }, { name: "Pat Sullivan", email: "admin@stormsoftware.com", url: "https://patsullivan.org" } ]; json.funding ??= { type: "github", url: "https://github.com/sponsors/storm-software" }; json.namespace ??= `@${options.namespace}`; json.description ??= options.description; options.repositoryUrl ??= `https://github.com/${options.organization}/${options.name}`; json.repository ??= { type: "github", url: `${options.repositoryUrl}.git` }; json.packageManager ??= "pnpm@10.3.0"; json.engines ??= { node: ">=20.11.0", pnpm: ">=10.3.0" }; json.prettier = "@storm-software/prettier/config.json"; json.nx ??= { includedScripts: [ "lint-sherif", "lint-knip", "lint-ls", "lint", "format", "format-sherif", "format-readme", "format-prettier", "format-toml", "commit", "release" ] }; json.scripts.adr = "pnpm log4brains adr new"; json.scripts["adr-preview"] = "pnpm log4brains preview"; json.scripts.prepare = "pnpm add lefthook -w && pnpm lefthook install"; json.scripts.preinstall = "npx -y only-allow pnpm"; json.scripts["install-csb"] = "corepack enable && pnpm install --no-frozen-lockfile"; json.scripts.clean = "rimraf dist && rimraf --glob packages/**/dist && rimraf --glob tools/**/dist && rimraf --glob docs/**/dist && rimraf --glob apps/**/dist && rimraf --glob libs/**/dist"; json.scripts.nuke = "nx clear-cache && rimraf .nx/cache && rimraf .nx/workspace-data && pnpm clean && rimraf pnpm-lock.yaml && rimraf --glob packages/**/node_modules && rimraf --glob tools/**/node_modules && rimraf node_modules"; json.scripts.prebuild = "pnpm clean"; json.scripts.build = "nx affected -t build --parallel=5"; json.scripts["build-all"] = "nx run-many -t build --all --parallel=5"; json.scripts["build-prod"] = "nx run-many -t build --all --prod --parallel=5"; json.scripts["build-tools"] = "nx run-many -t build --projects=tools/* --parallel=5"; json.scripts["build-docs"] = "nx run-many -t build --projects=docs/* --parallel=5"; if (!options.includeApps) { json.scripts["build-packages"] = "nx run-many -t build --projects=packages/* --parallel=5"; } else { json.scripts["build-apps"] = "nx run-many -t build --projects=apps/* --parallel=5"; json.scripts["build-libs"] = "nx run-many -t build --projects=libs/* --parallel=5"; json.scripts["build-storybook"] = "storybook build -s public"; } json.scripts.nx = "nx"; json.scripts.graph = "nx graph"; json.scripts.lint = "pnpm storm-lint all --skip-cspell --skip-alex"; if (options.includeApps) { json.scripts.start = "nx serve"; json.scripts.storybook = "pnpm storybook dev -p 6006"; } json.scripts.help = "nx help"; json.scripts["dep-graph"] = "nx dep-graph"; json.scripts["local-registry"] = `nx local-registry @${options.namespace}/${options.name}`; json.scripts.e2e = "nx e2e"; if (options.includeApps) { json.scripts.test = "nx test && pnpm test-storybook"; json.scripts["test-storybook"] = "pnpm test-storybook"; } else { json.scripts.test = "nx test"; } json.scripts.lint = "pnpm storm-lint all --skip-cspell --skip-alex"; json.scripts.commit = "pnpm storm-git commit"; json.scripts["api-extractor"] = 'pnpm storm-docs api-extractor --outputPath="docs/api-reference" --clean'; json.scripts.release = "pnpm storm-git release"; json.scripts.format = "nx format:write"; json.scripts["format-sherif"] = "pnpm exec sherif -f -i typescript -i react -i react-dom"; json.scripts["format-toml"] = 'pnpm exec taplo format --config="./node_modules/@storm-software/linting-tools/taplo/config.toml" --cache-path="./node_modules/.cache/storm/taplo"'; json.scripts["format-readme"] = 'pnpm storm-git readme --templates="tools/readme-templates"'; json.scripts["format-prettier"] = "pnpm exec prettier --write --ignore-unknown --no-error-on-unmatched-pattern --cache && git update-index"; json.scripts.lint = "pnpm storm-lint all --skip-cspell"; json.scripts["lint-knip"] = "pnpm exec knip"; json.scripts["lint-sherif"] = "pnpm exec sherif -i typescript -i react -i react-dom"; json.scripts["lint-ls"] = 'pnpm exec ls-lint --config="./node_modules/@storm-software/linting-tools/ls-lint/ls-lint.yml"'; json.packageManager ??= `pnpm@${_chunkSZWM7COVjs.pnpmVersion}`; json.engines = { node: `>=${_chunkSZWM7COVjs.nodeVersion}`, pnpm: `>=${_chunkSZWM7COVjs.pnpmVersion}` }; return json; }); _devkit.generateFiles.call(void 0, tree, path.join(__dirname, "files"), projectRoot, { ...options, pnpmVersion: _chunkSZWM7COVjs.pnpmVersion, nodeVersion: _chunkSZWM7COVjs.nodeVersion }); await _devkit.formatFiles.call(void 0, tree); let dependencies = { "@ls-lint/ls-lint": "2.2.3", "@ltd/j-toml": "1.38.0", "@nx/devkit": "^20.2.2", "@nx/eslint-plugin": "^20.2.2", "@nx/js": "^20.2.2", "@nx/workspace": "^20.2.2", "@storm-software/config": "latest", "@storm-software/git-tools": "latest", "@storm-software/linting-tools": "latest", "@storm-software/testing-tools": "latest", "@storm-software/workspace-tools": "latest", "@storm-software/eslint": "latest", "@storm-software/cspell": "latest", "@storm-software/prettier": "latest", "@taplo/cli": "0.7.0", "@types/node": "^25.3.0", copyfiles: "2.4.1", eslint: "9.5.0", jest: "29.7.0", "jest-environment-node": "29.7.0", knip: "5.25.2", lefthook: "1.6.18", nx: "^20.2.2", prettier: "3.3.2", "prettier-plugin-prisma": "5.0.0", rimraf: "5.0.7", sherif: "0.10.0", "ts-jest": "29.1.5", "ts-node": "10.9.2", tslib: "2.6.3", typescript: "5.5.3", verdaccio: "5.31.1" }; if (options.includeApps) { dependencies = { ...dependencies, react: "latest", "react-dom": "latest", storybook: "latest", "@storybook/addons": "latest", "@nx/react": "latest", "@nx/next": "latest", "@nx/node": "latest", "@nx/storybook": "latest", "jest-environment-jsdom": "29.7.0" }; } if (options.includeRust) { dependencies = { ...dependencies, "@monodon/rust": "1.4.0" }; } if (options.nxCloud) { dependencies = { ...dependencies, "nx-cloud": "latest" }; } await Promise.resolve( _devkit.addDependenciesToPackageJson.call(void 0, tree, dependencies, {}, _devkit.joinPathFragments.call(void 0, projectRoot, "package.json") ) ); return null; } var generator_default = _chunk7OQWJH4Bjs.withRunGenerator.call(void 0, "Storm Workspace Preset Generator", presetGeneratorFn ); exports.presetGeneratorFn = presetGeneratorFn; exports.generator_default = generator_default;