UNPKG

virmator

Version:

Handle common package configs, commands, and dependencies.

1,063 lines (1,062 loc) 111 kB
/** Default list of plugins that the virmator npm package's CLI uses. */ export declare const defaultVirmatorPlugins: (Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly compile: { readonly doc: { readonly sections: readonly ["\n Type checks TypeScript files and compiles them into JS outputs using the\n TypeScript compiler. Any extra args are passed directly to tsc.\n ", "\n Automatically compiles a mono-repo's sub packages in the correct order\n if called from a mono-repo root.\n "]; readonly examples: readonly [{ readonly content: "virmator compile"; }, { readonly title: "With tsc flags"; readonly content: "virmator compile --noEmit"; }]; }; readonly configFiles: { readonly tsconfigPackage: { readonly copyFromPath: string; readonly copyToPath: "tsconfig.json"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; }; readonly required: true; }; readonly tsconfigMonoPackage: { readonly copyFromPath: string; readonly copyToPath: "tsconfig.json"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-package": true; }; readonly required: true; }; readonly tsconfigMono: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly typescript: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; }; }; readonly "mono-vir": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; }; }; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly compile: { readonly doc: { readonly sections: readonly ["\n Type checks TypeScript files and compiles them into JS outputs using the\n TypeScript compiler. Any extra args are passed directly to tsc.\n ", "\n Automatically compiles a mono-repo's sub packages in the correct order\n if called from a mono-repo root.\n "]; readonly examples: readonly [{ readonly content: "virmator compile"; }, { readonly title: "With tsc flags"; readonly content: "virmator compile --noEmit"; }]; }; readonly configFiles: { readonly tsconfigPackage: { readonly copyFromPath: string; readonly copyToPath: "tsconfig.json"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; }; readonly required: true; }; readonly tsconfigMonoPackage: { readonly copyFromPath: string; readonly copyToPath: "tsconfig.json"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-package": true; }; readonly required: true; }; readonly tsconfigMono: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly typescript: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; }; }; readonly "mono-vir": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; }; }; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly deps: { readonly doc: { readonly sections: readonly ["\n Various dependency commands. A sub-command must be provided.\n "]; readonly examples: readonly [{ readonly title: "check import dependencies"; readonly content: "virmator deps check"; }, { readonly title: "upgrade npm dependencies"; readonly content: "virmator deps upgrade"; }, { readonly title: "regenerate npm dependencies"; readonly content: "virmator deps regen"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that import dependencies pass your dependency cruiser config.\n The base configuration blocks typical import errors such as\n circular dependencies and importing test files.\n "]; readonly examples: readonly [{ readonly content: "virmator deps check"; }]; }; readonly configFiles: { readonly depCruiser: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly "dependency-cruiser": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; readonly esbuild: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; }; }; readonly upgrade: { readonly doc: { readonly sections: readonly ["\n Upgrades dependencies using npm-check-update.\n Does not automatically run 'npm i'.\n It is recommended to run 'virmator deps regen' instead.\n ", "\n If a package name or glob is passed as an argument, only the\n matching direct dependencies are upgraded via\n 'npm i <extra-args> <name>@<version>'. An optional\n '@<version>' suffix on the argument selects which version to\n install (defaulting to 'latest' when omitted). Any flags or\n args supplied after the pattern are forwarded to npm verbatim\n (e.g. '--min-release-age 0'). In a mono-repo, this scans the\n root package.json as well as every workspace package.json,\n running an install in each one that has a match. Outside a\n mono-repo, it scans the current package only. The command\n errors out if no direct deps match in any package.json.\n "]; readonly examples: readonly [{ readonly content: "virmator deps upgrade"; }, { readonly title: "upgrade a single package across the mono-repo"; readonly content: "virmator deps upgrade @augment-vir/common"; }, { readonly title: "upgrade all packages matching a glob"; readonly content: "virmator deps upgrade \"@augment-vir/*\""; }, { readonly title: "upgrade matches to a specific version"; readonly content: "virmator deps upgrade \"my-package@^2.0.0\""; }, { readonly title: "forward npm flags (e.g. bypass min-release-age)"; readonly content: "virmator deps upgrade \"@augment-vir/*\" --min-release-age 0"; }]; }; readonly configFiles: { readonly ncu: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; readonly required: false; readonly configFlags: ["--config"]; }; }; readonly npmDeps: { readonly "npm-check-updates": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; }; }; readonly regen: { readonly doc: { readonly sections: readonly ["\n Force regeneration of all all dependencies by deleting all\n node_modules directories and package-lock.json and then\n running 'npm i'.\n "]; readonly examples: readonly [{ readonly content: "virmator deps regen"; }]; }; }; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly deps: { readonly doc: { readonly sections: readonly ["\n Various dependency commands. A sub-command must be provided.\n "]; readonly examples: readonly [{ readonly title: "check import dependencies"; readonly content: "virmator deps check"; }, { readonly title: "upgrade npm dependencies"; readonly content: "virmator deps upgrade"; }, { readonly title: "regenerate npm dependencies"; readonly content: "virmator deps regen"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that import dependencies pass your dependency cruiser config.\n The base configuration blocks typical import errors such as\n circular dependencies and importing test files.\n "]; readonly examples: readonly [{ readonly content: "virmator deps check"; }]; }; readonly configFiles: { readonly depCruiser: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly "dependency-cruiser": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; readonly esbuild: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; }; }; readonly upgrade: { readonly doc: { readonly sections: readonly ["\n Upgrades dependencies using npm-check-update.\n Does not automatically run 'npm i'.\n It is recommended to run 'virmator deps regen' instead.\n ", "\n If a package name or glob is passed as an argument, only the\n matching direct dependencies are upgraded via\n 'npm i <extra-args> <name>@<version>'. An optional\n '@<version>' suffix on the argument selects which version to\n install (defaulting to 'latest' when omitted). Any flags or\n args supplied after the pattern are forwarded to npm verbatim\n (e.g. '--min-release-age 0'). In a mono-repo, this scans the\n root package.json as well as every workspace package.json,\n running an install in each one that has a match. Outside a\n mono-repo, it scans the current package only. The command\n errors out if no direct deps match in any package.json.\n "]; readonly examples: readonly [{ readonly content: "virmator deps upgrade"; }, { readonly title: "upgrade a single package across the mono-repo"; readonly content: "virmator deps upgrade @augment-vir/common"; }, { readonly title: "upgrade all packages matching a glob"; readonly content: "virmator deps upgrade \"@augment-vir/*\""; }, { readonly title: "upgrade matches to a specific version"; readonly content: "virmator deps upgrade \"my-package@^2.0.0\""; }, { readonly title: "forward npm flags (e.g. bypass min-release-age)"; readonly content: "virmator deps upgrade \"@augment-vir/*\" --min-release-age 0"; }]; }; readonly configFiles: { readonly ncu: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; readonly required: false; readonly configFlags: ["--config"]; }; }; readonly npmDeps: { readonly "npm-check-updates": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; }; }; }; readonly regen: { readonly doc: { readonly sections: readonly ["\n Force regeneration of all all dependencies by deleting all\n node_modules directories and package-lock.json and then\n running 'npm i'.\n "]; readonly examples: readonly [{ readonly content: "virmator deps regen"; }]; }; }; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly docs: { readonly doc: { readonly sections: readonly ["\n Generates documentation using the typedoc package and inserts code examples\n into README files using the markdown-code-example-inserter package.\n "]; readonly examples: readonly [{ readonly content: "virmator docs"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that documentation is valid and passes all checks without\n generating documentation outputs.\n "]; readonly examples: readonly [{ readonly content: "virmator docs check"; }]; }; }; }; readonly configFiles: { readonly typedoc: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: true; }; }; readonly npmDeps: { readonly "markdown-code-example-inserter": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; readonly "mono-root": true; }; }; readonly typedoc: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; }; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly docs: { readonly doc: { readonly sections: readonly ["\n Generates documentation using the typedoc package and inserts code examples\n into README files using the markdown-code-example-inserter package.\n "]; readonly examples: readonly [{ readonly content: "virmator docs"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that documentation is valid and passes all checks without\n generating documentation outputs.\n "]; readonly examples: readonly [{ readonly content: "virmator docs check"; }]; }; }; }; readonly configFiles: { readonly typedoc: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: true; }; }; readonly npmDeps: { readonly "markdown-code-example-inserter": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; readonly "mono-root": true; }; }; readonly typedoc: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; }; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly format: { readonly doc: { readonly sections: readonly ["\n Formats with prettier.\n "]; readonly examples: readonly [{ readonly content: "virmator format"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that formatting is all valid.\n "]; readonly examples: readonly [{ readonly content: "virmator format check"; }]; }; }; }; readonly configFiles: { readonly prettier: { readonly copyFromPath: string; readonly copyToPath: "prettier.config.mjs"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; readonly prettierIgnore: { readonly copyFromPath: string; readonly copyToPath: ".prettierignore"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly prettier: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-jsdoc": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-multiline-arrays": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-organize-imports": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-packagejson": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-sort-json": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-toml": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-interpolated-html-tags": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly format: { readonly doc: { readonly sections: readonly ["\n Formats with prettier.\n "]; readonly examples: readonly [{ readonly content: "virmator format"; }]; }; readonly subCommands: { readonly check: { readonly doc: { readonly sections: readonly ["\n Checks that formatting is all valid.\n "]; readonly examples: readonly [{ readonly content: "virmator format check"; }]; }; }; }; readonly configFiles: { readonly prettier: { readonly copyFromPath: string; readonly copyToPath: "prettier.config.mjs"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; readonly prettierIgnore: { readonly copyFromPath: string; readonly copyToPath: ".prettierignore"; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: true; }; }; readonly npmDeps: { readonly prettier: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-jsdoc": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-multiline-arrays": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-organize-imports": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-packagejson": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-sort-json": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-toml": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; readonly "prettier-plugin-interpolated-html-tags": { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly "mono-root": true; readonly package: true; }; }; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly frontend: { readonly doc: { readonly sections: readonly ["\n Runs a frontend dev server with Vite.\n "]; readonly examples: readonly [{ readonly content: "virmator frontend"; }]; }; readonly subCommands: { readonly build: { readonly doc: { readonly sections: readonly ["\n Builds a frontend for deployment using Vite (and Rollup).\n "]; readonly examples: readonly [{ readonly content: "virmator frontend build"; }]; }; }; readonly preview: { readonly doc: { readonly sections: readonly ["\n Builds a frontend and previews that build in a local dev server.\n "]; readonly examples: readonly [{ readonly content: "virmator frontend preview"; }]; }; }; }; readonly configFiles: { readonly vite: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: true; readonly configFlags: ["--config"]; }; }; readonly npmDeps: { readonly typescript: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly web: true; }; readonly packageType: { readonly "mono-package": true; readonly package: true; }; }; readonly vite: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly web: true; }; readonly packageType: { readonly "mono-package": true; readonly package: true; }; }; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly frontend: { readonly doc: { readonly sections: readonly ["\n Runs a frontend dev server with Vite.\n "]; readonly examples: readonly [{ readonly content: "virmator frontend"; }]; }; readonly subCommands: { readonly build: { readonly doc: { readonly sections: readonly ["\n Builds a frontend for deployment using Vite (and Rollup).\n "]; readonly examples: readonly [{ readonly content: "virmator frontend build"; }]; }; }; readonly preview: { readonly doc: { readonly sections: readonly ["\n Builds a frontend and previews that build in a local dev server.\n "]; readonly examples: readonly [{ readonly content: "virmator frontend preview"; }]; }; }; }; readonly configFiles: { readonly vite: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: true; readonly configFlags: ["--config"]; }; }; readonly npmDeps: { readonly typescript: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly web: true; }; readonly packageType: { readonly "mono-package": true; readonly package: true; }; }; readonly vite: { readonly type: import("@virmator/core").NpmDepType.Dev; readonly env: { readonly web: true; }; readonly packageType: { readonly "mono-package": true; readonly package: true; }; }; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly help: { readonly doc: { readonly examples: readonly [{ readonly content: "virmator help"; }]; readonly sections: readonly ["Prints help messages for all supported plugins/commands."]; }; }; }>; }> & { pluginPackageRootPath: string; executor: import("@virmator/core").VirmatorPluginExecutor<NoInfer<{ readonly help: { readonly doc: { readonly examples: readonly [{ readonly content: "virmator help"; }]; readonly sections: readonly ["Prints help messages for all supported plugins/commands."]; }; }; }>>; }> | Readonly<Readonly<{ name: string; cliCommands: NoInfer<{ readonly init: { readonly doc: { readonly sections: readonly ["\n Init all default configs. Needs env and package type args.\n "]; readonly examples: readonly [{ readonly content: "virmator init web mono-repo"; }, { readonly content: "virmator init node package"; }]; }; readonly configFiles: { readonly ghPages: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: false; }; readonly ghTaggedRelease: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: false; }; readonly ghTestsNode: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly node: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: false; }; readonly ghTestsWeb: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: false; }; readonly vscodeSettings: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; readonly node: true; }; readonly packageType: { readonly package: true; readonly "mono-root": true; }; readonly required: false; }; readonly appElement: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: false; }; readonly indexHtml: { readonly copyFromPath: string; readonly copyToPath: string; readonly env: { readonly web: true; }; readonly packageType: { readonly package: true; readonly "mono-package": true; }; readonly required: false;