create-typescript-app 1.75.1 → 1.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bin/help.js +35 -35
- package/lib/bin/help.js.map +1 -1
- package/lib/bin/promptForMode.js +6 -6
- package/lib/bin/promptForMode.js.map +1 -1
- package/lib/shared/cli/spinners.d.ts +1 -1
- package/lib/shared/cli/spinners.js.map +1 -1
- package/lib/shared/options/args.d.ts +39 -13
- package/lib/shared/options/args.js +5 -0
- package/lib/shared/options/args.js.map +1 -1
- package/lib/shared/options/augmentOptionsWithExcludes.js +2 -2
- package/lib/shared/options/augmentOptionsWithExcludes.js.map +1 -1
- package/lib/shared/options/ensureRepositoryExists.js +1 -1
- package/lib/shared/options/ensureRepositoryExists.js.map +1 -1
- package/lib/shared/options/exclusionKeys.d.ts +1 -1
- package/lib/shared/options/exclusionKeys.js +6 -0
- package/lib/shared/options/exclusionKeys.js.map +1 -1
- package/lib/shared/options/optionsSchema.d.ts +6 -2
- package/lib/shared/options/optionsSchema.js +1 -0
- package/lib/shared/options/optionsSchema.js.map +1 -1
- package/lib/shared/options/readOptions.d.ts +1 -1
- package/lib/shared/options/readOptions.js +1 -0
- package/lib/shared/options/readOptions.js.map +1 -1
- package/lib/shared/types.d.ts +25 -24
- package/lib/steps/addOwnerAsAllContributor.js +2 -2
- package/lib/steps/addOwnerAsAllContributor.js.map +1 -1
- package/lib/steps/clearUnnecessaryFiles.js +3 -3
- package/lib/steps/clearUnnecessaryFiles.js.map +1 -1
- package/lib/steps/populateCSpellDictionary.js +7 -7
- package/lib/steps/populateCSpellDictionary.js.map +1 -1
- package/lib/steps/updateReadme.d.ts +1 -1
- package/lib/steps/updateReadme.js +1 -1
- package/lib/steps/updateReadme.js.map +1 -1
- package/lib/steps/writeReadme/index.js +19 -19
- package/lib/steps/writeReadme/index.js.map +1 -1
- package/lib/steps/writing/creation/createESLintConfig.js +21 -43
- package/lib/steps/writing/creation/createESLintConfig.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.js +27 -26
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/createMultiWorkflowFile.d.ts +8 -8
- package/lib/steps/writing/creation/dotGitHub/createMultiWorkflowFile.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/createSoloWorkflowFile.d.ts +16 -16
- package/lib/steps/writing/creation/dotGitHub/createSoloWorkflowFile.js.map +1 -1
- package/lib/steps/writing/creation/rootFiles.js +1 -1
- package/lib/steps/writing/creation/rootFiles.js.map +1 -1
- package/package.json +48 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/createESLintConfig.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { formatTypeScript } from \"./formatters/formatTypeScript.js\";\n\nexport async function createESLintConfig(options: Options) {\n\tconst tseslintBase = options.excludeLintStrict ? \"recommended\" : \"strict\";\n\n\tconst imports = [\n\t\t
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/createESLintConfig.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { formatTypeScript } from \"./formatters/formatTypeScript.js\";\n\nexport async function createESLintConfig(options: Options) {\n\tconst tseslintBase = options.excludeLintStrict ? \"recommended\" : \"strict\";\n\n\tconst imports = [\n\t\t!options.excludeLintESLint &&\n\t\t\t`import comments from \"@eslint-community/eslint-plugin-eslint-comments/configs\";`,\n\t\t`import eslint from \"@eslint/js\";`,\n\t\t!options.excludeTests && `import vitest from \"@vitest/eslint-plugin\";`,\n\t\t!options.excludeLintJSDoc && `import jsdoc from \"eslint-plugin-jsdoc\";`,\n\t\t!options.excludeLintJson && `import jsonc from \"eslint-plugin-jsonc\";`,\n\t\t!options.excludeLintMd && `import markdown from \"eslint-plugin-markdown\";`,\n\t\t`import n from \"eslint-plugin-n\";`,\n\t\t!options.excludeLintPackageJson &&\n\t\t\t`import packageJson from \"eslint-plugin-package-json/configs/recommended\";`,\n\t\t!options.excludeLintPerfectionist &&\n\t\t\t`import perfectionist from \"eslint-plugin-perfectionist\";`,\n\t\t!options.excludeLintRegex &&\n\t\t\t`import * as regexp from \"eslint-plugin-regexp\";`,\n\t\t!options.excludeLintYml && `import yml from \"eslint-plugin-yml\";`,\n\t\t`import tseslint from \"typescript-eslint\";`,\n\t].filter(Boolean);\n\n\tconst elements = [\n\t\t`eslint.configs.recommended,`,\n\t\t!options.excludeLintESLint && `\tcomments.recommended,`,\n\t\t!options.excludeLintJSDoc &&\n\t\t\t`\tjsdoc.configs[\"flat/contents-typescript-error\"],\n\t\tjsdoc.configs[\"flat/logical-typescript-error\"],\n\t\tjsdoc.configs[\"flat/stylistic-typescript-error\"],`,\n\t\t!options.excludeLintJson && `\tjsonc.configs[\"flat/recommended-with-json\"],`,\n\t\t!options.excludeLintMd && `\tmarkdown.configs.recommended,`,\n\t\t`\tn.configs[\"flat/recommended\"],`,\n\t\t!options.excludeLintPackageJson && `\tpackageJson,`,\n\t\t!options.excludeLintPerfectionist &&\n\t\t\t`\tperfectionist.configs[\"recommended-natural\"],`,\n\t\t!options.excludeLintRegex && `\tregexp.configs[\"flat/recommended\"],`,\n\t].filter(Boolean);\n\n\tconst ignores = [\n\t\t...(options.excludeTests ? [] : [\"**/*.snap\", \"coverage\"]),\n\t\t\"lib\",\n\t\t\"node_modules\",\n\t\t\"pnpm-lock.yaml\",\n\t]\n\t\t.map((ignore) => JSON.stringify(ignore))\n\t\t.sort();\n\n\tconst rules =\n\t\t!options.excludeLintStylistic &&\n\t\t`{\n\t\t\t// Stylistic concerns that don't interfere with Prettier\n\t\t\t\"logical-assignment-operators\": [\n\t\t\t\t\"error\",\n\t\t\t\t\"always\",\n\t\t\t\t{ enforceForIfStatements: true },\n\t\t\t],\n\t\t\t\"no-useless-rename\": \"error\",\n\t\t\t\"object-shorthand\": \"error\",\n\t\t\t\"operator-assignment\": \"error\",\n\t\t}`;\n\n\treturn await formatTypeScript(`${imports.join(\"\\n\")}\n\nexport default tseslint.config(\n\t{ ignores: [${ignores.join(\", \")}], },\n\t{ linterOptions: { reportUnusedDisableDirectives: \"error\" } },\n\t${elements.join(\"\\n\")}\n\t{\n\t\textends: ${\n\t\t\toptions.excludeLintStylistic\n\t\t\t\t? `tseslint.configs.${tseslintBase}TypeChecked`\n\t\t\t\t: `[\n\t\t\ttseslint.configs.${tseslintBase}TypeChecked,\n\t\t\ttseslint.configs.stylisticTypeChecked,\n\t\t]`\n\t\t},\n\t\tfiles: [\"**/*.js\", \"**/*.ts\"],\n\t\tlanguageOptions: {\n\t\t\tparserOptions: {\n\t\t\t\tprojectService: { allowDefaultProject: [\"*.config.*s\"] },\n\t\t\t\ttsconfigRootDir: import.meta.dirname\n\t\t\t},\n\t\t},${\n\t\t\trules\n\t\t\t\t? `\n\t\trules: ${rules},`\n\t\t\t\t: \"\"\n\t\t}${\n\t\t\toptions.excludeLintPerfectionist\n\t\t\t\t? \"\"\n\t\t\t\t: `\n\t\tsettings: { perfectionist: { partitionByComment: true, type: \"natural\" } },`\n\t\t}\n\t},\n\t{\n\t\textends: [tseslint.configs.disableTypeChecked],\n\t\tfiles: [\"**/*.md/*.ts\"],\n\t\trules: {\n\t\t\t\"n/no-missing-import\": [\n\t\t\t\t\"error\",\n\t\t\t\t{ allowModules: [\"${options.repository}\"] },\n\t\t\t],\n\t\t},\n\t},${\n\t\toptions.excludeTests\n\t\t\t? \"\"\n\t\t\t: `\n\t{\n\t\textends: [vitest.configs.recommended],\n\t\tfiles: [\"**/*.test.*\"],\n\t\trules: {\n\t\t\t\"@typescript-eslint/no-unsafe-assignment\": \"off\",\n\t\t},\n\t},`\n\t}${\n\t\toptions.excludeLintYml\n\t\t\t? \"\"\n\t\t\t: `\n\t{\n\t\textends: [yml.configs[\"flat/recommended\"], yml.configs[\"flat/prettier\"]],\n\t\tfiles: [\"**/*.{yml,yaml}\"],\n\t\trules: {\n\t\t\t\"yml/file-extension\": [\"error\", { extension: \"yml\" }],\n\t\t\t\"yml/sort-keys\": [\n\t\t\t\t\"error\",\n\t\t\t\t{ order: { type: \"asc\" }, pathPattern: \"^.*$\" },\n\t\t\t],\n\t\t\t\"yml/sort-sequence-values\": [\n\t\t\t\t\"error\",\n\t\t\t\t{ order: { type: \"asc\" }, pathPattern: \"^.*$\" },\n\t\t\t],\n\t\t},\n\t},`\n\t}\n);\n`);\n}\n"],"mappings":"AACA,SAAS,wBAAwB;AAEjC,eAAsB,mBAAmB,SAAkB;AAC1D,QAAM,eAAe,QAAQ,oBAAoB,gBAAgB;AAEjE,QAAM,UAAU;AAAA,IACf,CAAC,QAAQ,qBACR;AAAA,IACD;AAAA,IACA,CAAC,QAAQ,gBAAgB;AAAA,IACzB,CAAC,QAAQ,oBAAoB;AAAA,IAC7B,CAAC,QAAQ,mBAAmB;AAAA,IAC5B,CAAC,QAAQ,iBAAiB;AAAA,IAC1B;AAAA,IACA,CAAC,QAAQ,0BACR;AAAA,IACD,CAAC,QAAQ,4BACR;AAAA,IACD,CAAC,QAAQ,oBACR;AAAA,IACD,CAAC,QAAQ,kBAAkB;AAAA,IAC3B;AAAA,EACD,EAAE,OAAO,OAAO;AAEhB,QAAM,WAAW;AAAA,IAChB;AAAA,IACA,CAAC,QAAQ,qBAAqB;AAAA,IAC9B,CAAC,QAAQ,oBACR;AAAA;AAAA;AAAA,IAGD,CAAC,QAAQ,mBAAmB;AAAA,IAC5B,CAAC,QAAQ,iBAAiB;AAAA,IAC1B;AAAA,IACA,CAAC,QAAQ,0BAA0B;AAAA,IACnC,CAAC,QAAQ,4BACR;AAAA,IACD,CAAC,QAAQ,oBAAoB;AAAA,EAC9B,EAAE,OAAO,OAAO;AAEhB,QAAM,UAAU;AAAA,IACf,GAAI,QAAQ,eAAe,CAAC,IAAI,CAAC,aAAa,UAAU;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,EACD,EACE,IAAI,CAAC,WAAW,KAAK,UAAU,MAAM,CAAC,EACtC,KAAK;AAEP,QAAM,QACL,CAAC,QAAQ,wBACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYD,SAAO,MAAM,iBAAiB,GAAG,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,eAGrC,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA,GAE9B,SAAS,KAAK,IAAI,CAAC;AAAA;AAAA,aAGnB,QAAQ,uBACL,oBAAoB,YAAY,gBAChC;AAAA,sBACgB,YAAY;AAAA;AAAA,IAGhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQC,QACG;AAAA,WACK,KAAK,MACV,EACJ,GACC,QAAQ,2BACL,KACA;AAAA,8EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQsB,QAAQ,UAAU;AAAA;AAAA;AAAA,KAIxC,QAAQ,eACL,KACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQJ,GACC,QAAQ,iBACL,KACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBJ;AAAA;AAAA,CAEA;AACD;","names":[]}
|
|
@@ -8,32 +8,6 @@ const headingAliases = /* @__PURE__ */ new Map([
|
|
|
8
8
|
["test", "Testing"],
|
|
9
9
|
["tests", "Testing"]
|
|
10
10
|
]);
|
|
11
|
-
function createLintingSection(options) {
|
|
12
|
-
const lintLines = [
|
|
13
|
-
!options.excludeLintKnip && `- \`pnpm lint:knip\` ([knip](https://github.com/webpro/knip)): Detects unused files, dependencies, and code exports`,
|
|
14
|
-
!options.excludeLintMd && `- \`pnpm lint:md\` ([Markdownlint](https://github.com/DavidAnson/markdownlint): Checks Markdown source files`,
|
|
15
|
-
!options.excludeLintPackages && `- \`pnpm lint:packages\` ([pnpm dedupe --check](https://pnpm.io/cli/dedupe)): Checks for unnecessarily duplicated packages in the \`pnpm-lock.yml\` file`,
|
|
16
|
-
!options.excludeLintSpelling && `- \`pnpm lint:spelling\` ([cspell](https://cspell.org)): Spell checks across all source files`
|
|
17
|
-
].filter(Boolean);
|
|
18
|
-
return lintLines.length ? [
|
|
19
|
-
`This package includes several forms of linting to enforce consistent code quality and styling.`,
|
|
20
|
-
`Each should be shown in VS Code, and can be run manually on the command-line:`,
|
|
21
|
-
``,
|
|
22
|
-
`- \`pnpm lint\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files`,
|
|
23
|
-
...lintLines,
|
|
24
|
-
``,
|
|
25
|
-
`Read the individual documentation for each linter to understand how it can be configured and used best.`,
|
|
26
|
-
``,
|
|
27
|
-
`For example, ESLint can be run with \`--fix\` to auto-fix some lint rule complaints:`
|
|
28
|
-
].join("\n") : `[ESLint](https://eslint.org) is used with with [typescript-eslint](https://typescript-eslint.io)) to lint JavaScript and TypeScript source files.
|
|
29
|
-
You can run it locally on the command-line:
|
|
30
|
-
|
|
31
|
-
\`\`\`shell
|
|
32
|
-
pnpm run lint
|
|
33
|
-
\`\`\`
|
|
34
|
-
|
|
35
|
-
ESLint can be run with \`--fix\` to auto-fix some lint rule complaints:`;
|
|
36
|
-
}
|
|
37
11
|
async function createDevelopment(options) {
|
|
38
12
|
const existingContents = await readFileSafe(".github/DEVELOPMENT.md", "");
|
|
39
13
|
const newSections = {
|
|
@@ -79,6 +53,7 @@ pnpm run test --coverage
|
|
|
79
53
|
|
|
80
54
|
Note that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.
|
|
81
55
|
Calls to \`console.log\`, \`console.warn\`, and other console methods will cause a test to fail.`,
|
|
56
|
+
// Debugging tests are intentionally put second
|
|
82
57
|
"### Debugging Tests": `This repository includes a [VS Code launch configuration](https://code.visualstudio.com/docs/editor/debugging) for debugging unit tests.
|
|
83
58
|
To launch it, open a test file, then run _Debug Current Test File_ from the VS Code Debug panel (or press F5).`
|
|
84
59
|
},
|
|
@@ -132,6 +107,32 @@ ${content}`
|
|
|
132
107
|
`;
|
|
133
108
|
return result;
|
|
134
109
|
}
|
|
110
|
+
function createLintingSection(options) {
|
|
111
|
+
const lintLines = [
|
|
112
|
+
!options.excludeLintKnip && `- \`pnpm lint:knip\` ([knip](https://github.com/webpro/knip)): Detects unused files, dependencies, and code exports`,
|
|
113
|
+
!options.excludeLintMd && `- \`pnpm lint:md\` ([Markdownlint](https://github.com/DavidAnson/markdownlint): Checks Markdown source files`,
|
|
114
|
+
!options.excludeLintPackages && `- \`pnpm lint:packages\` ([pnpm dedupe --check](https://pnpm.io/cli/dedupe)): Checks for unnecessarily duplicated packages in the \`pnpm-lock.yml\` file`,
|
|
115
|
+
!options.excludeLintSpelling && `- \`pnpm lint:spelling\` ([cspell](https://cspell.org)): Spell checks across all source files`
|
|
116
|
+
].filter(Boolean);
|
|
117
|
+
return lintLines.length ? [
|
|
118
|
+
`This package includes several forms of linting to enforce consistent code quality and styling.`,
|
|
119
|
+
`Each should be shown in VS Code, and can be run manually on the command-line:`,
|
|
120
|
+
``,
|
|
121
|
+
`- \`pnpm lint\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files`,
|
|
122
|
+
...lintLines,
|
|
123
|
+
``,
|
|
124
|
+
`Read the individual documentation for each linter to understand how it can be configured and used best.`,
|
|
125
|
+
``,
|
|
126
|
+
`For example, ESLint can be run with \`--fix\` to auto-fix some lint rule complaints:`
|
|
127
|
+
].join("\n") : `[ESLint](https://eslint.org) is used with with [typescript-eslint](https://typescript-eslint.io)) to lint JavaScript and TypeScript source files.
|
|
128
|
+
You can run it locally on the command-line:
|
|
129
|
+
|
|
130
|
+
\`\`\`shell
|
|
131
|
+
pnpm run lint
|
|
132
|
+
\`\`\`
|
|
133
|
+
|
|
134
|
+
ESLint can be run with \`--fix\` to auto-fix some lint rule complaints:`;
|
|
135
|
+
}
|
|
135
136
|
export {
|
|
136
137
|
createDevelopment
|
|
137
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/steps/writing/creation/dotGitHub/createDevelopment/index.ts"],"sourcesContent":["import { readFileSafe } from \"../../../../../shared/readFileSafe.js\";\nimport { Options } from \"../../../../../shared/types.js\";\nimport { splitIntoSections } from \"./splitIntoSections.js\";\n\nconst headingAliases = new Map([\n\t[\"build\", \"Building\"],\n\t[\"builds\", \"Building\"],\n\t[\"format\", \"Formatting\"],\n\t[\"lint\", \"Linting\"],\n\t[\"test\", \"Testing\"],\n\t[\"tests\", \"Testing\"],\n]);\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/steps/writing/creation/dotGitHub/createDevelopment/index.ts"],"sourcesContent":["import { readFileSafe } from \"../../../../../shared/readFileSafe.js\";\nimport { Options } from \"../../../../../shared/types.js\";\nimport { splitIntoSections } from \"./splitIntoSections.js\";\n\nconst headingAliases = new Map([\n\t[\"build\", \"Building\"],\n\t[\"builds\", \"Building\"],\n\t[\"format\", \"Formatting\"],\n\t[\"lint\", \"Linting\"],\n\t[\"test\", \"Testing\"],\n\t[\"tests\", \"Testing\"],\n]);\n\nexport async function createDevelopment(options: Options) {\n\tconst existingContents = await readFileSafe(\".github/DEVELOPMENT.md\", \"\");\n\n\tconst newSections = {\n\t\t\"## Building\": `Run [**tsup**](https://tsup.egoist.dev) locally to build source files from \\`src/\\` into output files in \\`lib/\\`:\n\n\\`\\`\\`shell\npnpm build\n\\`\\`\\`\n\nAdd \\`--watch\\` to run the builder in a watch mode that continuously cleans and recreates \\`lib/\\` as you save files:\n\n\\`\\`\\`shell\npnpm build --watch\n\\`\\`\\``,\n\t\t\"## Formatting\": `[Prettier](https://prettier.io) is used to format code.\nIt should be applied automatically when you save files in VS Code or make a Git commit.\n\nTo manually reformat all files, you can run:\n\n\\`\\`\\`shell\npnpm format --write\n\\`\\`\\``,\n\t\t\"## Linting\": `${createLintingSection(options)}\n\n\\`\\`\\`shell\npnpm run lint --fix\n\\`\\`\\`\n\nNote that you'll likely need to run \\`pnpm build\\` before \\`pnpm lint\\` so that lint rules which check the file system can pick up on any built files.`,\n\n\t\t...(!options.excludeTests && {\n\t\t\t\"## Testing\": `[Vitest](https://vitest.dev) is used for tests.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run test\n\\`\\`\\`\n\nAdd the \\`--coverage\\` flag to compute test coverage and place reports in the \\`coverage/\\` directory:\n\n\\`\\`\\`shell\npnpm run test --coverage\n\\`\\`\\`\n\nNote that [console-fail-test](https://github.com/JoshuaKGoldberg/console-fail-test) is enabled for all test runs.\nCalls to \\`console.log\\`, \\`console.warn\\`, and other console methods will cause a test to fail.`,\n\n\t\t\t// Debugging tests are intentionally put second\n\t\t\t\"### Debugging Tests\": `This repository includes a [VS Code launch configuration](https://code.visualstudio.com/docs/editor/debugging) for debugging unit tests.\nTo launch it, open a test file, then run _Debug Current Test File_ from the VS Code Debug panel (or press F5).`,\n\t\t}),\n\t\t\"## Type Checking\": `You should be able to see suggestions from [TypeScript](https://typescriptlang.org) in your editor for all open files.\n\nHowever, it can be useful to run the TypeScript command-line (\\`tsc\\`) to type check all files in \\`src/\\`:\n\n\\`\\`\\`shell\npnpm tsc\n\\`\\`\\`\n\nAdd \\`--watch\\` to keep the type checker running in a watch mode that updates the display as you save files:\n\n\\`\\`\\`shell\npnpm tsc --watch\n\\`\\`\\``,\n\t};\n\n\tconst newSectionHeadings = new Set([\n\t\t\"Development\",\n\t\tObject.keys(newSections).map((key) => key.replace(/^#* /, \"\")),\n\t]);\n\n\tconst preservedSections = Object.fromEntries(\n\t\tsplitIntoSections(existingContents).filter(([key]) => {\n\t\t\tconst keyText = key.replace(/^#* /, \"\");\n\t\t\treturn !newSectionHeadings.has(\n\t\t\t\theadingAliases.get(keyText.toLowerCase()) ?? keyText,\n\t\t\t);\n\t\t}),\n\t);\n\n\tconst result = `# Development\n${\n\toptions.guide\n\t\t? `\n> If you'd like a more guided walkthrough, see [${options.guide.title}](${options.guide.href}).\n> It'll walk you through the common activities you'll need to contribute.\n`\n\t\t: \"\"\n}\nAfter [forking the repo from GitHub](https://help.github.com/articles/fork-a-repo) and [installing pnpm](https://pnpm.io/installation):\n\n\\`\\`\\`shell\ngit clone https://github.com/<your-name-here>/${options.repository}\ncd ${options.repository}\npnpm install\n\\`\\`\\`\n\n> This repository includes a list of suggested VS Code extensions.\n> It's a good idea to use [VS Code](https://code.visualstudio.com) and accept its suggestion to install them, as they'll help with development.\n\n${Object.entries({ ...newSections, ...preservedSections })\n\t.map(\n\t\t([heading, content]) => `${heading}\n\n${content}`,\n\t)\n\t.join(\"\\n\\n\")}\n`;\n\n\treturn result;\n}\n\nfunction createLintingSection(options: Options) {\n\tconst lintLines = [\n\t\t!options.excludeLintKnip &&\n\t\t\t`- \\`pnpm lint:knip\\` ([knip](https://github.com/webpro/knip)): Detects unused files, dependencies, and code exports`,\n\t\t!options.excludeLintMd &&\n\t\t\t`- \\`pnpm lint:md\\` ([Markdownlint](https://github.com/DavidAnson/markdownlint): Checks Markdown source files`,\n\t\t!options.excludeLintPackages &&\n\t\t\t`- \\`pnpm lint:packages\\` ([pnpm dedupe --check](https://pnpm.io/cli/dedupe)): Checks for unnecessarily duplicated packages in the \\`pnpm-lock.yml\\` file`,\n\t\t!options.excludeLintSpelling &&\n\t\t\t`- \\`pnpm lint:spelling\\` ([cspell](https://cspell.org)): Spell checks across all source files`,\n\t].filter(Boolean);\n\n\treturn lintLines.length\n\t\t? [\n\t\t\t\t`This package includes several forms of linting to enforce consistent code quality and styling.`,\n\t\t\t\t`Each should be shown in VS Code, and can be run manually on the command-line:`,\n\t\t\t\t``,\n\t\t\t\t`- \\`pnpm lint\\` ([ESLint](https://eslint.org) with [typescript-eslint](https://typescript-eslint.io)): Lints JavaScript and TypeScript source files`,\n\t\t\t\t...lintLines,\n\t\t\t\t``,\n\t\t\t\t`Read the individual documentation for each linter to understand how it can be configured and used best.`,\n\t\t\t\t``,\n\t\t\t\t`For example, ESLint can be run with \\`--fix\\` to auto-fix some lint rule complaints:`,\n\t\t\t].join(\"\\n\")\n\t\t: `[ESLint](https://eslint.org) is used with with [typescript-eslint](https://typescript-eslint.io)) to lint JavaScript and TypeScript source files.\nYou can run it locally on the command-line:\n\n\\`\\`\\`shell\npnpm run lint\n\\`\\`\\`\n\nESLint can be run with \\`--fix\\` to auto-fix some lint rule complaints:`;\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAElC,MAAM,iBAAiB,oBAAI,IAAI;AAAA,EAC9B,CAAC,SAAS,UAAU;AAAA,EACpB,CAAC,UAAU,UAAU;AAAA,EACrB,CAAC,UAAU,YAAY;AAAA,EACvB,CAAC,QAAQ,SAAS;AAAA,EAClB,CAAC,QAAQ,SAAS;AAAA,EAClB,CAAC,SAAS,SAAS;AACpB,CAAC;AAED,eAAsB,kBAAkB,SAAkB;AACzD,QAAM,mBAAmB,MAAM,aAAa,0BAA0B,EAAE;AAExE,QAAM,cAAc;AAAA,IACnB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWf,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQjB,cAAc,GAAG,qBAAqB,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ9C,GAAI,CAAC,QAAQ,gBAAgB;AAAA,MAC5B,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBd,uBAAuB;AAAA;AAAA,IAExB;AAAA,IACA,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAarB;AAEA,QAAM,qBAAqB,oBAAI,IAAI;AAAA,IAClC;AAAA,IACA,OAAO,KAAK,WAAW,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,QAAQ,EAAE,CAAC;AAAA,EAC9D,CAAC;AAED,QAAM,oBAAoB,OAAO;AAAA,IAChC,kBAAkB,gBAAgB,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM;AACrD,YAAM,UAAU,IAAI,QAAQ,QAAQ,EAAE;AACtC,aAAO,CAAC,mBAAmB;AAAA,QAC1B,eAAe,IAAI,QAAQ,YAAY,CAAC,KAAK;AAAA,MAC9C;AAAA,IACD,CAAC;AAAA,EACF;AAEA,QAAM,SAAS;AAAA,EAEf,QAAQ,QACL;AAAA,kDAC8C,QAAQ,MAAM,KAAK,KAAK,QAAQ,MAAM,IAAI;AAAA;AAAA,IAGxF,EACJ;AAAA;AAAA;AAAA;AAAA,gDAIgD,QAAQ,UAAU;AAAA,KAC7D,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrB,OAAO,QAAQ,EAAE,GAAG,aAAa,GAAG,kBAAkB,CAAC,EACvD;AAAA,IACA,CAAC,CAAC,SAAS,OAAO,MAAM,GAAG,OAAO;AAAA;AAAA,EAElC,OAAO;AAAA,EACR,EACC,KAAK,MAAM,CAAC;AAAA;AAGb,SAAO;AACR;AAEA,SAAS,qBAAqB,SAAkB;AAC/C,QAAM,YAAY;AAAA,IACjB,CAAC,QAAQ,mBACR;AAAA,IACD,CAAC,QAAQ,iBACR;AAAA,IACD,CAAC,QAAQ,uBACR;AAAA,IACD,CAAC,QAAQ,uBACR;AAAA,EACF,EAAE,OAAO,OAAO;AAEhB,SAAO,UAAU,SACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,KAAK,IAAI,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQJ;","names":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
interface MultiWorkflowFileOptions {
|
|
2
|
+
jobs: MultiWorkflowJobOptions[];
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
interface MultiWorkflowJobOptions {
|
|
6
|
+
name: string;
|
|
7
|
+
steps: MultiWorkflowJobStep[];
|
|
8
|
+
}
|
|
1
9
|
type MultiWorkflowJobStep = {
|
|
2
10
|
run: string;
|
|
3
11
|
} | {
|
|
4
12
|
uses: string;
|
|
5
13
|
};
|
|
6
|
-
interface MultiWorkflowJobOptions {
|
|
7
|
-
name: string;
|
|
8
|
-
steps: MultiWorkflowJobStep[];
|
|
9
|
-
}
|
|
10
|
-
interface MultiWorkflowFileOptions {
|
|
11
|
-
jobs: MultiWorkflowJobOptions[];
|
|
12
|
-
name: string;
|
|
13
|
-
}
|
|
14
14
|
declare function createMultiWorkflowFile({ jobs, name, }: MultiWorkflowFileOptions): string;
|
|
15
15
|
|
|
16
16
|
export { type MultiWorkflowFileOptions, type MultiWorkflowJobOptions, type MultiWorkflowJobStep, createMultiWorkflowFile };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/steps/writing/creation/dotGitHub/createMultiWorkflowFile.ts"],"sourcesContent":["import { formatWorkflowYaml } from \"./formatWorkflowYaml.js\";\n\nexport
|
|
1
|
+
{"version":3,"sources":["../../../../../src/steps/writing/creation/dotGitHub/createMultiWorkflowFile.ts"],"sourcesContent":["import { formatWorkflowYaml } from \"./formatWorkflowYaml.js\";\n\nexport interface MultiWorkflowFileOptions {\n\tjobs: MultiWorkflowJobOptions[];\n\tname: string;\n}\n\nexport interface MultiWorkflowJobOptions {\n\tname: string;\n\tsteps: MultiWorkflowJobStep[];\n}\n\nexport type MultiWorkflowJobStep = { run: string } | { uses: string };\n\nexport function createMultiWorkflowFile({\n\tjobs,\n\tname,\n}: MultiWorkflowFileOptions) {\n\treturn formatWorkflowYaml({\n\t\tjobs: Object.fromEntries(\n\t\t\tjobs.map((job) => [\n\t\t\t\tjob.name.toLowerCase().replaceAll(\" \", \"_\"),\n\t\t\t\t{\n\t\t\t\t\tname: job.name,\n\t\t\t\t\t\"runs-on\": \"ubuntu-latest\",\n\t\t\t\t\tsteps: [\n\t\t\t\t\t\t{ uses: \"actions/checkout@v4\" },\n\t\t\t\t\t\t{ uses: \"./.github/actions/prepare\" },\n\t\t\t\t\t\t...job.steps,\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t]),\n\t\t),\n\t\tname,\n\t\ton: {\n\t\t\tpull_request: null,\n\t\t\tpush: {\n\t\t\t\tbranches: [\"main\"],\n\t\t\t},\n\t\t},\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAc5B,SAAS,wBAAwB;AAAA,EACvC;AAAA,EACA;AACD,GAA6B;AAC5B,SAAO,mBAAmB;AAAA,IACzB,MAAM,OAAO;AAAA,MACZ,KAAK,IAAI,CAAC,QAAQ;AAAA,QACjB,IAAI,KAAK,YAAY,EAAE,WAAW,KAAK,GAAG;AAAA,QAC1C;AAAA,UACC,MAAM,IAAI;AAAA,UACV,WAAW;AAAA,UACX,OAAO;AAAA,YACN,EAAE,MAAM,sBAAsB;AAAA,YAC9B,EAAE,MAAM,4BAA4B;AAAA,YACpC,GAAG,IAAI;AAAA,UACR;AAAA,QACD;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IACA;AAAA,IACA,IAAI;AAAA,MACH,cAAc;AAAA,MACd,MAAM;AAAA,QACL,UAAU,CAAC,MAAM;AAAA,MAClB;AAAA,IACD;AAAA,EACD,CAAC;AACF;","names":[]}
|
|
@@ -9,10 +9,10 @@ interface WorkflowFileOn {
|
|
|
9
9
|
issues?: {
|
|
10
10
|
types?: string[];
|
|
11
11
|
};
|
|
12
|
-
pull_request?: {
|
|
12
|
+
pull_request?: null | string | {
|
|
13
13
|
branches?: string | string[];
|
|
14
14
|
types?: string[];
|
|
15
|
-
}
|
|
15
|
+
};
|
|
16
16
|
pull_request_target?: {
|
|
17
17
|
types: string[];
|
|
18
18
|
};
|
|
@@ -24,6 +24,20 @@ interface WorkflowFileOn {
|
|
|
24
24
|
};
|
|
25
25
|
workflow_dispatch?: null | string;
|
|
26
26
|
}
|
|
27
|
+
type WorkflowFileOptions = WorkflowFileOptionsRuns | WorkflowFileOptionsSteps;
|
|
28
|
+
interface WorkflowFileOptionsBase {
|
|
29
|
+
concurrency?: WorkflowFileConcurrency;
|
|
30
|
+
if?: string;
|
|
31
|
+
name: string;
|
|
32
|
+
on?: WorkflowFileOn;
|
|
33
|
+
permissions?: WorkflowFilePermissions;
|
|
34
|
+
}
|
|
35
|
+
interface WorkflowFileOptionsRuns extends WorkflowFileOptionsBase {
|
|
36
|
+
runs: (string | WorkflowFileStep)[];
|
|
37
|
+
}
|
|
38
|
+
interface WorkflowFileOptionsSteps extends WorkflowFileOptionsBase {
|
|
39
|
+
steps: WorkflowFileStep[];
|
|
40
|
+
}
|
|
27
41
|
interface WorkflowFilePermissions {
|
|
28
42
|
contents?: string;
|
|
29
43
|
"id-token"?: string;
|
|
@@ -38,20 +52,6 @@ interface WorkflowFileStep {
|
|
|
38
52
|
uses?: string;
|
|
39
53
|
with?: Record<string, unknown>;
|
|
40
54
|
}
|
|
41
|
-
interface WorkflowFileOptionsBase {
|
|
42
|
-
concurrency?: WorkflowFileConcurrency;
|
|
43
|
-
if?: string;
|
|
44
|
-
name: string;
|
|
45
|
-
on?: WorkflowFileOn;
|
|
46
|
-
permissions?: WorkflowFilePermissions;
|
|
47
|
-
}
|
|
48
|
-
interface WorkflowFileOptionsRuns extends WorkflowFileOptionsBase {
|
|
49
|
-
runs: (string | WorkflowFileStep)[];
|
|
50
|
-
}
|
|
51
|
-
interface WorkflowFileOptionsSteps extends WorkflowFileOptionsBase {
|
|
52
|
-
steps: WorkflowFileStep[];
|
|
53
|
-
}
|
|
54
|
-
type WorkflowFileOptions = WorkflowFileOptionsRuns | WorkflowFileOptionsSteps;
|
|
55
55
|
declare function createSoloWorkflowFile({ concurrency, name, on, permissions, ...options }: WorkflowFileOptions): string;
|
|
56
56
|
|
|
57
57
|
export { createSoloWorkflowFile };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/steps/writing/creation/dotGitHub/createSoloWorkflowFile.ts"],"sourcesContent":["import { formatWorkflowYaml } from \"./formatWorkflowYaml.js\";\n\ninterface WorkflowFileConcurrency {\n\t\"cancel-in-progress\"?: boolean;\n\tgroup: string;\n}\n\ninterface WorkflowFileOn {\n\tissue_comment?: {\n\t\ttypes?: string[];\n\t};\n\tissues?: {\n\t\ttypes?: string[];\n\t};\n\tpull_request?:\n\t\t| {\n\t\t\t\tbranches?: string | string[];\n\t\t\t\ttypes?: string[];\n\t\t }
|
|
1
|
+
{"version":3,"sources":["../../../../../src/steps/writing/creation/dotGitHub/createSoloWorkflowFile.ts"],"sourcesContent":["import { formatWorkflowYaml } from \"./formatWorkflowYaml.js\";\n\ninterface WorkflowFileConcurrency {\n\t\"cancel-in-progress\"?: boolean;\n\tgroup: string;\n}\n\ninterface WorkflowFileOn {\n\tissue_comment?: {\n\t\ttypes?: string[];\n\t};\n\tissues?: {\n\t\ttypes?: string[];\n\t};\n\tpull_request?:\n\t\t| null\n\t\t| string\n\t\t| {\n\t\t\t\tbranches?: string | string[];\n\t\t\t\ttypes?: string[];\n\t\t };\n\tpull_request_target?: {\n\t\ttypes: string[];\n\t};\n\tpush?: {\n\t\tbranches: string[];\n\t};\n\trelease?: {\n\t\ttypes: string[];\n\t};\n\tworkflow_dispatch?: null | string;\n}\n\ntype WorkflowFileOptions = WorkflowFileOptionsRuns | WorkflowFileOptionsSteps;\n\ninterface WorkflowFileOptionsBase {\n\tconcurrency?: WorkflowFileConcurrency;\n\tif?: string;\n\tname: string;\n\ton?: WorkflowFileOn;\n\tpermissions?: WorkflowFilePermissions;\n}\n\ninterface WorkflowFileOptionsRuns extends WorkflowFileOptionsBase {\n\truns: (string | WorkflowFileStep)[];\n}\n\ninterface WorkflowFileOptionsSteps extends WorkflowFileOptionsBase {\n\tsteps: WorkflowFileStep[];\n}\n\ninterface WorkflowFilePermissions {\n\tcontents?: string;\n\t\"id-token\"?: string;\n\tissues?: string;\n\t\"pull-requests\"?: string;\n}\n\ninterface WorkflowFileStep {\n\tenv?: Record<string, string>;\n\tif?: string;\n\tname?: string;\n\trun?: string;\n\tuses?: string;\n\twith?: Record<string, unknown>;\n}\n\nexport function createSoloWorkflowFile({\n\tconcurrency,\n\tname,\n\ton,\n\tpermissions,\n\t...options\n}: WorkflowFileOptions) {\n\treturn formatWorkflowYaml({\n\t\tconcurrency,\n\t\tjobs: {\n\t\t\t[name.replaceAll(\" \", \"_\").toLowerCase()]: {\n\t\t\t\t...(options.if && { if: options.if }),\n\t\t\t\t\"runs-on\": \"ubuntu-latest\",\n\t\t\t\tsteps:\n\t\t\t\t\t\"runs\" in options\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{ uses: \"actions/checkout@v4\" },\n\t\t\t\t\t\t\t\t{ uses: \"./.github/actions/prepare\" },\n\t\t\t\t\t\t\t\t...options.runs.map((run) => ({ run })),\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: options.steps,\n\t\t\t},\n\t\t},\n\t\tname,\n\t\ton,\n\t\tpermissions,\n\t});\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAmE5B,SAAS,uBAAuB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GAAwB;AACvB,SAAO,mBAAmB;AAAA,IACzB;AAAA,IACA,MAAM;AAAA,MACL,CAAC,KAAK,WAAW,KAAK,GAAG,EAAE,YAAY,CAAC,GAAG;AAAA,QAC1C,GAAI,QAAQ,MAAM,EAAE,IAAI,QAAQ,GAAG;AAAA,QACnC,WAAW;AAAA,QACX,OACC,UAAU,UACP;AAAA,UACA,EAAE,MAAM,sBAAsB;AAAA,UAC9B,EAAE,MAAM,4BAA4B;AAAA,UACpC,GAAG,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AAAA,QACvC,IACC,QAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/rootFiles.ts"],"sourcesContent":["import { Options } from \"../../../shared/types.js\";\nimport { createDotGitignore } from \"./createDotGitignore.js\";\nimport { createESLintConfig } from \"./createESLintConfig.js\";\nimport { createTsupConfig } from \"./createTsupConfig.js\";\nimport { formatIgnoreFile } from \"./formatters/formatIgnoreFile.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\nimport { writeAllContributorsRC } from \"./writeAllContributorsRC.js\";\nimport { writePackageJson } from \"./writePackageJson.js\";\n\nexport async function createRootFiles(options: Options) {\n\treturn {\n\t\t\".all-contributorsrc\": await writeAllContributorsRC(options),\n\t\t\".gitignore\": createDotGitignore(options),\n\t\t\"eslint.config.js\": await createESLintConfig(options),\n\t\t...(!options.excludeLintMd && {\n\t\t\t\".markdownlint.json\": await formatJson({\n\t\t\t\textends: \"markdownlint/style/prettier\",\n\t\t\t\t\"first-line-h1\": false,\n\t\t\t\t\"no-inline-html\": false,\n\t\t\t}),\n\t\t\t\".markdownlintignore\": formatIgnoreFile([\n\t\t\t\t\".github/CODE_OF_CONDUCT.md\",\n\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\"lib/\",\n\t\t\t\t\"node_modules/\",\n\t\t\t]),\n\t\t}),\n\t\t\".nvmrc\": `20.18.0\\n`,\n\t\t\".prettierignore\": formatIgnoreFile([\n\t\t\t...(options.excludeAllContributors ? [] : [\"/.all-contributorsrc\"]),\n\t\t\t\"/.husky\",\n\t\t\t...(options.excludeTests ? [] : [\"/coverage\"]),\n\t\t\t\"/lib\",\n\t\t\t\"/pnpm-lock.yaml\",\n\t\t]),\n\t\t\".prettierrc.json\": await formatJson({\n\t\t\t$schema: \"http://json.schemastore.org/prettierrc\",\n\t\t\toverrides: [\n\t\t\t\t{\n\t\t\t\t\tfiles: \".nvmrc\",\n\t\t\t\t\toptions: { parser: \"yaml\" },\n\t\t\t\t},\n\t\t\t],\n\t\t\tplugins: [\n\t\t\t\t\"prettier-plugin-curly\",\n\t\t\t\t\"prettier-plugin-sh\",\n\t\t\t\t\"prettier-plugin-packagejson\",\n\t\t\t],\n\t\t\tuseTabs: true,\n\t\t}),\n\t\t...(!options.excludeReleases && {\n\t\t\t\".release-it.json\": await formatJson({\n\t\t\t\tgit: {\n\t\t\t\t\tcommitMessage: \"chore: release v${version}\",\n\t\t\t\t\trequireCommits: true,\n\t\t\t\t},\n\t\t\t\tgithub: {\n\t\t\t\t\tautoGenerate: true,\n\t\t\t\t\trelease: true,\n\t\t\t\t\treleaseName: \"v${version}\",\n\t\t\t\t},\n\t\t\t\tnpm: {\n\t\t\t\t\tpublishArgs: [`--access ${options.access}`, \"--provenance\"],\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\t\"@release-it/conventional-changelog\": {\n\t\t\t\t\t\tinfile: \"CHANGELOG.md\",\n\t\t\t\t\t\tpreset: \"angular\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t}),\n\t\t\"LICENSE.md\": `# MIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n`,\n\t\t...(!options.excludeLintSpelling && {\n\t\t\t\"cspell.json\": await formatJson({\n\t\t\t\tdictionaries: [\"typescript\"],\n\t\t\t\tignorePaths: [\n\t\t\t\t\t...(options.excludeAllContributors ? [] : [\".all-contributorsrc\"]),\n\t\t\t\t\t\".github\",\n\t\t\t\t\t\"CHANGELOG.md\",\n\t\t\t\t\t...(options.excludeTests ? [] : [\"coverage\"]),\n\t\t\t\t\t\"lib\",\n\t\t\t\t\t\"node_modules\",\n\t\t\t\t\t\"pnpm-lock.yaml\",\n\t\t\t\t],\n\t\t\t}),\n\t\t}),\n\t\t...(!options.excludeLintKnip && {\n\t\t\t\"knip.json\": await formatJson({\n\t\t\t\t$schema: \"https://unpkg.com/knip@latest/schema.json\",\n\t\t\t\tentry: [\"src/index.ts!\"],\n\t\t\t\tignoreExportsUsedInFile: {\n\t\t\t\t\tinterface: true,\n\t\t\t\t\ttype: true,\n\t\t\t\t},\n\t\t\t\tproject: [\"src/**/*.ts!\"],\n\t\t\t}),\n\t\t}),\n\t\t\"package.json\": await writePackageJson(options),\n\t\t\"tsconfig.json\": await formatJson({\n\t\t\tcompilerOptions: {\n\t\t\t\tdeclaration: true,\n\t\t\t\tdeclarationMap: true,\n\t\t\t\tesModuleInterop: true,\n\t\t\t\tmodule: \"NodeNext\",\n\t\t\t\tmoduleResolution: \"NodeNext\",\n\t\t\t\tnoEmit: true,\n\t\t\t\tresolveJsonModule: true,\n\t\t\t\tskipLibCheck: true,\n\t\t\t\tsourceMap: true,\n\t\t\t\tstrict: true,\n\t\t\t\ttarget: \"ES2022\",\n\t\t\t},\n\t\t\tinclude: [\"src\"],\n\t\t}),\n\t\t\"tsup.config.ts\": await createTsupConfig(options),\n\t\t...(!options.excludeTests && {\n\t\t\t\"vitest.config.ts\": `import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tclearMocks: true,\n\t\tcoverage: {\n\t\t\tall: true,\n\t\t\texclude: [\"lib\"],\n\t\t\tinclude: [\"src\"],\n\t\t\treporter: [\"html\", \"lcov\"],\n\t\t},\n\t\texclude: [\"lib\", \"node_modules\"],\n\t\tsetupFiles: [\"console-fail-test/setup\"],\n\t},\n});\n`,\n\t\t}),\n\t};\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-typescript-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.76.0",
|
|
4
4
|
"description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 💝",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"*": "prettier --ignore-unknown --write"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@clack/prompts": "^0.8.
|
|
44
|
+
"@clack/prompts": "^0.8.2",
|
|
45
45
|
"all-contributors-for-repository": "^0.3.0",
|
|
46
46
|
"chalk": "^5.3.0",
|
|
47
|
-
"execa": "^9.
|
|
47
|
+
"execa": "^9.5.1",
|
|
48
48
|
"get-github-auth-token": "^0.1.0",
|
|
49
49
|
"git-remote-origin-url": "^4.0.0",
|
|
50
50
|
"git-url-parse": "^16.0.0",
|
|
@@ -53,55 +53,55 @@
|
|
|
53
53
|
"npm-user": "^6.1.1",
|
|
54
54
|
"octokit": "^4.0.2",
|
|
55
55
|
"parse-author": "^2.0.0",
|
|
56
|
-
"prettier": "^3.
|
|
57
|
-
"replace-in-file": "^8.
|
|
56
|
+
"prettier": "^3.4.1",
|
|
57
|
+
"replace-in-file": "^8.2.0",
|
|
58
58
|
"rimraf": "^6.0.1",
|
|
59
|
-
"title-case": "^4.3.
|
|
59
|
+
"title-case": "^4.3.2",
|
|
60
60
|
"zod": "^3.23.8",
|
|
61
|
-
"zod-validation-error": "^3.
|
|
61
|
+
"zod-validation-error": "^3.4.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@eslint-community/eslint-plugin-eslint-comments": "
|
|
65
|
-
"@eslint/js": "
|
|
66
|
-
"@octokit/request-error": "
|
|
67
|
-
"@release-it/conventional-changelog": "
|
|
68
|
-
"@types/eslint-plugin-markdown": "
|
|
69
|
-
"@types/eslint__js": "
|
|
70
|
-
"@types/git-url-parse": "
|
|
71
|
-
"@types/js-yaml": "
|
|
72
|
-
"@types/node": "
|
|
73
|
-
"@types/parse-author": "
|
|
74
|
-
"@vitest/coverage-v8": "
|
|
75
|
-
"@vitest/eslint-plugin": "
|
|
76
|
-
"c8": "
|
|
77
|
-
"console-fail-test": "
|
|
78
|
-
"cspell": "
|
|
79
|
-
"eslint": "
|
|
80
|
-
"eslint-plugin-jsdoc": "
|
|
81
|
-
"eslint-plugin-jsonc": "
|
|
82
|
-
"eslint-plugin-markdown": "
|
|
83
|
-
"eslint-plugin-n": "
|
|
84
|
-
"eslint-plugin-package-json": "
|
|
85
|
-
"eslint-plugin-perfectionist": "
|
|
86
|
-
"eslint-plugin-regexp": "
|
|
87
|
-
"eslint-plugin-yml": "
|
|
88
|
-
"globby": "
|
|
89
|
-
"husky": "
|
|
90
|
-
"jsonc-eslint-parser": "
|
|
91
|
-
"knip": "5.
|
|
92
|
-
"lint-staged": "
|
|
93
|
-
"markdownlint": "
|
|
94
|
-
"markdownlint-cli": "
|
|
95
|
-
"prettier-plugin-curly": "
|
|
96
|
-
"prettier-plugin-packagejson": "
|
|
97
|
-
"prettier-plugin-sh": "
|
|
98
|
-
"release-it": "
|
|
99
|
-
"sentences-per-line": "
|
|
100
|
-
"tsup": "
|
|
101
|
-
"tsx": "
|
|
102
|
-
"typescript": "
|
|
103
|
-
"typescript-eslint": "
|
|
104
|
-
"vitest": "
|
|
64
|
+
"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
|
|
65
|
+
"@eslint/js": "9.16.0",
|
|
66
|
+
"@octokit/request-error": "6.1.5",
|
|
67
|
+
"@release-it/conventional-changelog": "9.0.3",
|
|
68
|
+
"@types/eslint-plugin-markdown": "2.0.2",
|
|
69
|
+
"@types/eslint__js": "8.42.3",
|
|
70
|
+
"@types/git-url-parse": "9.0.3",
|
|
71
|
+
"@types/js-yaml": "4.0.9",
|
|
72
|
+
"@types/node": "22.10.1",
|
|
73
|
+
"@types/parse-author": "2.0.3",
|
|
74
|
+
"@vitest/coverage-v8": "2.1.8",
|
|
75
|
+
"@vitest/eslint-plugin": "1.1.14",
|
|
76
|
+
"c8": "10.1.2",
|
|
77
|
+
"console-fail-test": "0.5.0",
|
|
78
|
+
"cspell": "8.16.1",
|
|
79
|
+
"eslint": "9.16.0",
|
|
80
|
+
"eslint-plugin-jsdoc": "50.6.0",
|
|
81
|
+
"eslint-plugin-jsonc": "2.18.2",
|
|
82
|
+
"eslint-plugin-markdown": "5.1.0",
|
|
83
|
+
"eslint-plugin-n": "17.14.0",
|
|
84
|
+
"eslint-plugin-package-json": "0.17.0",
|
|
85
|
+
"eslint-plugin-perfectionist": "4.2.0",
|
|
86
|
+
"eslint-plugin-regexp": "2.7.0",
|
|
87
|
+
"eslint-plugin-yml": "1.16.0",
|
|
88
|
+
"globby": "14.0.2",
|
|
89
|
+
"husky": "9.1.7",
|
|
90
|
+
"jsonc-eslint-parser": "2.4.0",
|
|
91
|
+
"knip": "5.39.1",
|
|
92
|
+
"lint-staged": "15.2.10",
|
|
93
|
+
"markdownlint": "0.36.1",
|
|
94
|
+
"markdownlint-cli": "0.43.0",
|
|
95
|
+
"prettier-plugin-curly": "0.3.1",
|
|
96
|
+
"prettier-plugin-packagejson": "2.5.6",
|
|
97
|
+
"prettier-plugin-sh": "0.14.0",
|
|
98
|
+
"release-it": "17.10.0",
|
|
99
|
+
"sentences-per-line": "0.2.1",
|
|
100
|
+
"tsup": "8.3.5",
|
|
101
|
+
"tsx": "4.19.2",
|
|
102
|
+
"typescript": "5.7.2",
|
|
103
|
+
"typescript-eslint": "8.17.0",
|
|
104
|
+
"vitest": "2.1.8"
|
|
105
105
|
},
|
|
106
106
|
"engines": {
|
|
107
107
|
"node": ">=18.3.0"
|