create-typescript-app 1.53.0 → 1.54.1
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/README.md +13 -9
- package/lib/create/createWithOptions.js +3 -9
- package/lib/create/createWithOptions.js.map +1 -1
- package/lib/initialize/initializeWithOptions.js +3 -8
- package/lib/initialize/initializeWithOptions.js.map +1 -1
- package/lib/migrate/migrateWithOptions.js +3 -9
- package/lib/migrate/migrateWithOptions.js.map +1 -1
- package/lib/shared/createCleanupCommands.d.ts +7 -0
- package/lib/shared/{createCleanUpFilesCommands.js → createCleanupCommands.js} +5 -5
- package/lib/shared/createCleanupCommands.js.map +1 -0
- package/lib/steps/clearUnnecessaryFiles.js +1 -0
- package/lib/steps/clearUnnecessaryFiles.js.map +1 -1
- package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.js +1 -1
- package/lib/steps/initializeGitHubRepository/labels/outcomeLabels.js.map +1 -1
- package/lib/steps/runCleanup.d.ts +7 -0
- package/lib/steps/{runCommands.js → runCleanup.js} +8 -4
- package/lib/steps/runCleanup.js.map +1 -0
- package/lib/steps/uninstallPackages.js +1 -0
- package/lib/steps/uninstallPackages.js.map +1 -1
- package/lib/steps/updateLocalFiles.js +33 -21
- package/lib/steps/updateLocalFiles.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/actions.js +1 -1
- package/lib/steps/writing/creation/dotGitHub/actions.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.d.ts +7 -0
- package/lib/steps/writing/creation/dotGitHub/{createDevelopment.js → createDevelopment/index.js} +79 -60
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/index.js.map +1 -0
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/splitIntoSections.d.ts +3 -0
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/splitIntoSections.js +24 -0
- package/lib/steps/writing/creation/dotGitHub/createDevelopment/splitIntoSections.js.map +1 -0
- package/lib/steps/writing/creation/dotGitHub/createDotGitHubFiles.js +2 -2
- package/lib/steps/writing/creation/dotGitHub/createDotGitHubFiles.js.map +1 -1
- package/lib/steps/writing/creation/dotGitHub/createWorkflows.js +1 -1
- package/lib/steps/writing/creation/dotGitHub/createWorkflows.js.map +1 -1
- package/lib/steps/writing/creation/dotVSCode.d.ts +1 -0
- package/lib/steps/writing/creation/dotVSCode.js +35 -12
- package/lib/steps/writing/creation/dotVSCode.js.map +1 -1
- package/lib/steps/writing/creation/rootFiles.d.ts +2 -2
- package/lib/steps/writing/creation/rootFiles.js +3 -7
- package/lib/steps/writing/creation/rootFiles.js.map +1 -1
- package/lib/steps/writing/creation/writePackageJson.js +6 -3
- package/lib/steps/writing/creation/writePackageJson.js.map +1 -1
- package/package.json +6 -5
- package/lib/shared/createCleanUpFilesCommands.d.ts +0 -7
- package/lib/shared/createCleanUpFilesCommands.js.map +0 -1
- package/lib/steps/runCommands.d.ts +0 -3
- package/lib/steps/runCommands.js.map +0 -1
- package/lib/steps/writing/creation/dotGitHub/createDevelopment.d.ts +0 -7
- package/lib/steps/writing/creation/dotGitHub/createDevelopment.js.map +0 -1
|
@@ -27,7 +27,9 @@ const devDependenciesToRemove = [
|
|
|
27
27
|
"ts-jest"
|
|
28
28
|
];
|
|
29
29
|
async function writePackageJson(options) {
|
|
30
|
-
const existingPackageJson = await readFileSafeAsJson(
|
|
30
|
+
const existingPackageJson = await readFileSafeAsJson(
|
|
31
|
+
"./package.json"
|
|
32
|
+
) ?? {};
|
|
31
33
|
return await formatJson({
|
|
32
34
|
// If we didn't already have a version, set it to 0.0.0
|
|
33
35
|
version: "0.0.0",
|
|
@@ -61,7 +63,7 @@ async function writePackageJson(options) {
|
|
|
61
63
|
},
|
|
62
64
|
main: "./lib/index.js",
|
|
63
65
|
name: options.repository,
|
|
64
|
-
packageManager: "pnpm@8.14.
|
|
66
|
+
packageManager: "pnpm@8.14.1",
|
|
65
67
|
publishConfig: {
|
|
66
68
|
provenance: true
|
|
67
69
|
},
|
|
@@ -70,8 +72,9 @@ async function writePackageJson(options) {
|
|
|
70
72
|
url: `https://github.com/${options.owner}/${options.repository}`
|
|
71
73
|
},
|
|
72
74
|
scripts: {
|
|
75
|
+
...existingPackageJson.scripts,
|
|
73
76
|
build: "tsup",
|
|
74
|
-
format:
|
|
77
|
+
format: "prettier .",
|
|
75
78
|
lint: "eslint . .*js --max-warnings 0",
|
|
76
79
|
...!options.excludeLintKnip && {
|
|
77
80
|
"lint:knip": "knip"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\"./package.json\")) as
|
|
1
|
+
{"version":3,"sources":["../../../../src/steps/writing/creation/writePackageJson.ts"],"sourcesContent":["import { readFileSafeAsJson } from \"../../../shared/readFileSafeAsJson.js\";\nimport { Options, PartialPackageData } from \"../../../shared/types.js\";\nimport { formatJson } from \"./formatters/formatJson.js\";\n\nconst devDependenciesToRemove = [\n\t\"@babel/core\",\n\t\"@babel/preset-env\",\n\t\"@babel/preset-react\",\n\t\"@babel/preset-typescript\",\n\t\"@swc/jest\",\n\t\"@vitest/coverage-istanbul\",\n\t\"ava\",\n\t\"babel-jest\",\n\t\"commitlint\",\n\t\"cson-parser\",\n\t\"esbuild\",\n\t\"eslint-config-prettier\",\n\t\"eslint-plugin-import\",\n\t\"eslint-plugin-jest\",\n\t\"eslint-plugin-prettier\",\n\t\"eslint-plugin-simple-import-sort\",\n\t\"eslint-plugin-typescript-sort-keys\",\n\t\"jasmine\",\n\t\"jest\",\n\t\"mocha\",\n\t\"npm-run-all\",\n\t\"pnpm-deduplicate\",\n\t\"pretty-quick\",\n\t\"ts-jest\",\n];\n\nexport async function writePackageJson(options: Options) {\n\tconst existingPackageJson =\n\t\t((await readFileSafeAsJson(\n\t\t\t\"./package.json\",\n\t\t)) as PartialPackageData | null) ?? {};\n\n\treturn await formatJson({\n\t\t// If we didn't already have a version, set it to 0.0.0\n\t\tversion: \"0.0.0\",\n\n\t\t// To start, copy over all existing package fields (e.g. \"dependencies\")\n\t\t...existingPackageJson,\n\n\t\tauthor: { email: options.email.npm, name: options.author },\n\t\tbin: options.bin,\n\t\tdescription: options.description,\n\t\tkeywords: options.keywords?.length\n\t\t\t? options.keywords.flatMap((keyword) => keyword.split(/ /))\n\t\t\t: undefined,\n\n\t\t// We copy all existing dev dependencies except those we know are not used anymore\n\t\tdevDependencies: copyDevDependencies(existingPackageJson),\n\n\t\t// Remove fields we know we don't want, such as old or redundant configs\n\t\teslintConfig: undefined,\n\t\thusky: undefined,\n\t\tprettierConfig: undefined,\n\t\ttypes: undefined,\n\n\t\t// The rest of the fields are ones we know from our template\n\t\tengines: {\n\t\t\tnode: \">=18\",\n\t\t},\n\t\tfiles: [\n\t\t\toptions.bin?.replace(/^\\.\\//, \"\"),\n\t\t\t\"lib/\",\n\t\t\t\"package.json\",\n\t\t\t\"LICENSE.md\",\n\t\t\t\"README.md\",\n\t\t].filter(Boolean),\n\t\tlicense: \"MIT\",\n\t\t\"lint-staged\": {\n\t\t\t\"*\": \"prettier --ignore-unknown --write\",\n\t\t},\n\t\tmain: \"./lib/index.js\",\n\t\tname: options.repository,\n\t\tpackageManager: \"pnpm@8.14.1\",\n\t\tpublishConfig: {\n\t\t\tprovenance: true,\n\t\t},\n\t\trepository: {\n\t\t\ttype: \"git\",\n\t\t\turl: `https://github.com/${options.owner}/${options.repository}`,\n\t\t},\n\t\tscripts: {\n\t\t\t...existingPackageJson.scripts,\n\t\t\tbuild: \"tsup\",\n\t\t\tformat: \"prettier .\",\n\t\t\tlint: \"eslint . .*js --max-warnings 0\",\n\t\t\t...(!options.excludeLintKnip && {\n\t\t\t\t\"lint:knip\": \"knip\",\n\t\t\t}),\n\t\t\t...(!options.excludeLintMd && {\n\t\t\t\t\"lint:md\":\n\t\t\t\t\t'markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line',\n\t\t\t}),\n\t\t\t...(!options.excludeLintPackageJson && {\n\t\t\t\t\"lint:package-json\": \"npmPkgJsonLint .\",\n\t\t\t}),\n\t\t\t...(!options.excludeLintPackages && {\n\t\t\t\t\"lint:packages\": \"pnpm dedupe --check\",\n\t\t\t}),\n\t\t\t...(!options.excludeLintSpelling && {\n\t\t\t\t\"lint:spelling\": 'cspell \"**\" \".github/**/*\"',\n\t\t\t}),\n\t\t\tprepare: \"husky install\",\n\t\t\t...(!options.excludeReleases && {\n\t\t\t\t\"should-semantic-release\": \"should-semantic-release --verbose\",\n\t\t\t}),\n\t\t\t...(!options.excludeReleases && { test: \"vitest\" }),\n\t\t\ttsc: \"tsc\",\n\t\t},\n\t\ttype: \"module\",\n\t});\n}\n\nfunction copyDevDependencies(existingPackageJson: object) {\n\tconst devDependencies =\n\t\t\"devDependencies\" in existingPackageJson\n\t\t\t? (existingPackageJson.devDependencies as Record<string, string>)\n\t\t\t: {};\n\n\tfor (const devDependencyToRemove of devDependenciesToRemove) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete devDependencies[devDependencyToRemove];\n\t}\n\n\treturn devDependencies;\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAE3B,MAAM,0BAA0B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,eAAsB,iBAAiB,SAAkB;AACxD,QAAM,sBACH,MAAM;AAAA,IACP;AAAA,EACD,KAAoC,CAAC;AAEtC,SAAO,MAAM,WAAW;AAAA;AAAA,IAEvB,SAAS;AAAA;AAAA,IAGT,GAAG;AAAA,IAEH,QAAQ,EAAE,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,OAAO;AAAA,IACzD,KAAK,QAAQ;AAAA,IACb,aAAa,QAAQ;AAAA,IACrB,UAAU,QAAQ,UAAU,SACzB,QAAQ,SAAS,QAAQ,CAAC,YAAY,QAAQ,MAAM,GAAG,CAAC,IACxD;AAAA;AAAA,IAGH,iBAAiB,oBAAoB,mBAAmB;AAAA;AAAA,IAGxD,cAAc;AAAA,IACd,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA,IAGP,SAAS;AAAA,MACR,MAAM;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACN,QAAQ,KAAK,QAAQ,SAAS,EAAE;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,EAAE,OAAO,OAAO;AAAA,IAChB,SAAS;AAAA,IACT,eAAe;AAAA,MACd,KAAK;AAAA,IACN;AAAA,IACA,MAAM;AAAA,IACN,MAAM,QAAQ;AAAA,IACd,gBAAgB;AAAA,IAChB,eAAe;AAAA,MACd,YAAY;AAAA,IACb;AAAA,IACA,YAAY;AAAA,MACX,MAAM;AAAA,MACN,KAAK,sBAAsB,QAAQ,KAAK,IAAI,QAAQ,UAAU;AAAA,IAC/D;AAAA,IACA,SAAS;AAAA,MACR,GAAG,oBAAoB;AAAA,MACvB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,GAAI,CAAC,QAAQ,mBAAmB;AAAA,QAC/B,aAAa;AAAA,MACd;AAAA,MACA,GAAI,CAAC,QAAQ,iBAAiB;AAAA,QAC7B,WACC;AAAA,MACF;AAAA,MACA,GAAI,CAAC,QAAQ,0BAA0B;AAAA,QACtC,qBAAqB;AAAA,MACtB;AAAA,MACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,QACnC,iBAAiB;AAAA,MAClB;AAAA,MACA,GAAI,CAAC,QAAQ,uBAAuB;AAAA,QACnC,iBAAiB;AAAA,MAClB;AAAA,MACA,SAAS;AAAA,MACT,GAAI,CAAC,QAAQ,mBAAmB;AAAA,QAC/B,2BAA2B;AAAA,MAC5B;AAAA,MACA,GAAI,CAAC,QAAQ,mBAAmB,EAAE,MAAM,SAAS;AAAA,MACjD,KAAK;AAAA,IACN;AAAA,IACA,MAAM;AAAA,EACP,CAAC;AACF;AAEA,SAAS,oBAAoB,qBAA6B;AACzD,QAAM,kBACL,qBAAqB,sBACjB,oBAAoB,kBACrB,CAAC;AAEL,aAAW,yBAAyB,yBAAyB;AAE5D,WAAO,gBAAgB,qBAAqB;AAAA,EAC7C;AAEA,SAAO;AACR;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-typescript-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.54.1",
|
|
4
4
|
"description": "Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling. 💝",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
],
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsup",
|
|
26
|
-
"format": "prettier
|
|
26
|
+
"format": "prettier .",
|
|
27
27
|
"initialize": "tsx ./bin/index.js --mode initialize",
|
|
28
28
|
"lint": "eslint . .*js --max-warnings 0",
|
|
29
29
|
"lint:knip": "knip",
|
|
@@ -90,15 +90,16 @@
|
|
|
90
90
|
"globby": "^14.0.0",
|
|
91
91
|
"husky": "^8.0.3",
|
|
92
92
|
"jsonc-eslint-parser": "^2.4.0",
|
|
93
|
-
"knip": "3.
|
|
93
|
+
"knip": "3.13.2",
|
|
94
94
|
"lint-staged": "^15.2.0",
|
|
95
|
-
"markdownlint": "^0.
|
|
95
|
+
"markdownlint": "^0.33.0",
|
|
96
96
|
"markdownlint-cli": "^0.38.0",
|
|
97
97
|
"npm-package-json-lint": "^7.1.0",
|
|
98
98
|
"npm-package-json-lint-config-default": "^6.0.0",
|
|
99
99
|
"prettier-plugin-curly": "^0.1.3",
|
|
100
100
|
"prettier-plugin-packagejson": "^2.4.7",
|
|
101
101
|
"release-it": "^17.0.0",
|
|
102
|
+
"rimraf": "^5.0.5",
|
|
102
103
|
"sentences-per-line": "^0.2.1",
|
|
103
104
|
"should-semantic-release": "^0.2.1",
|
|
104
105
|
"tsup": "^8.0.1",
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
"vitest": "^1.0.2",
|
|
108
109
|
"yaml-eslint-parser": "^1.2.2"
|
|
109
110
|
},
|
|
110
|
-
"packageManager": "pnpm@8.14.
|
|
111
|
+
"packageManager": "pnpm@8.14.1",
|
|
111
112
|
"engines": {
|
|
112
113
|
"node": ">=18"
|
|
113
114
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/createCleanUpFilesCommands.ts"],"sourcesContent":["export interface CleanUpFilesOptions {\n\tbin?: boolean;\n\tdedupe?: boolean;\n}\n\nexport function createCleanUpFilesCommands({\n\tbin,\n\tdedupe,\n}: CleanUpFilesOptions) {\n\treturn [\n\t\t// There's no need to dedupe when initializing from the fixed template\n\t\t...(dedupe ? [\"pnpm dedupe\"] : []),\n\t\t// n/no-missing-import rightfully reports on a missing the bin .js file\n\t\t...(bin ? [\"pnpm build\"] : []),\n\t\t\"pnpm lint --fix\",\n\t\t\"pnpm format --write\",\n\t];\n}\n"],"mappings":"AAKO,SAAS,2BAA2B;AAAA,EAC1C;AAAA,EACA;AACD,GAAwB;AACvB,SAAO;AAAA;AAAA,IAEN,GAAI,SAAS,CAAC,aAAa,IAAI,CAAC;AAAA;AAAA,IAEhC,GAAI,MAAM,CAAC,YAAY,IAAI,CAAC;AAAA,IAC5B;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/steps/runCommands.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport { execaCommand } from \"execa\";\n\nimport { logLine } from \"../shared/cli/lines.js\";\nimport { withSpinner } from \"../shared/cli/spinners.js\";\n\nexport async function runCommands(label: string, commands: string[]) {\n\tconst failed: string[] = [];\n\n\tawait withSpinner(label, async () => {\n\t\tfor (const command of commands) {\n\t\t\ttry {\n\t\t\t\tawait execaCommand(command);\n\t\t\t} catch {\n\t\t\t\tfailed.push(command);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!failed.length) {\n\t\treturn;\n\t}\n\n\tlogLine();\n\n\tfor (const command of failed) {\n\t\tlogLine(\n\t\t\t[\n\t\t\t\tchalk.yellow(`🟡 Running \\``),\n\t\t\t\tchalk.yellowBright(command),\n\t\t\t\tchalk.yellow(`\\` failed. You should run it and fix its complaints.`),\n\t\t\t].join(\"\"),\n\t\t);\n\t}\n}\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAE5B,eAAsB,YAAY,OAAe,UAAoB;AACpE,QAAM,SAAmB,CAAC;AAE1B,QAAM,YAAY,OAAO,YAAY;AACpC,eAAW,WAAW,UAAU;AAC/B,UAAI;AACH,cAAM,aAAa,OAAO;AAAA,MAC3B,QAAQ;AACP,eAAO,KAAK,OAAO;AAAA,MACpB;AAAA,IACD;AAAA,EACD,CAAC;AAED,MAAI,CAAC,OAAO,QAAQ;AACnB;AAAA,EACD;AAEA,UAAQ;AAER,aAAW,WAAW,QAAQ;AAC7B;AAAA,MACC;AAAA,QACC,MAAM,OAAO,sBAAe;AAAA,QAC5B,MAAM,aAAa,OAAO;AAAA,QAC1B,MAAM,OAAO,sDAAsD;AAAA,MACpE,EAAE,KAAK,EAAE;AAAA,IACV;AAAA,EACD;AACD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/steps/writing/creation/dotGitHub/createDevelopment.ts"],"sourcesContent":["import { Options } from \"../../../../shared/types.js\";\n\nexport function createDevelopment(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.excludeLintPackageJson &&\n\t\t\t`- \\`pnpm lint:package-json\\` ([npm-package-json-lint](https://npmpackagejsonlint.org/)): Lints the \\`package.json\\` file`,\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 `# 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## Building\n\nRun [**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\n## Formatting\n\n[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\n## Linting\n\n${\n\tlintLines.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 ].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\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${\n\t!options.excludeTests &&\n\t`## Testing\n\n[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### Debugging Tests\n\nThis 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`\n}\n## Type Checking\n\nYou 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`;\n}\n"],"mappings":"AAEO,SAAS,kBAAkB,SAAkB;AACnD,QAAM,YAAY;AAAA,IACjB,CAAC,QAAQ,mBACR;AAAA,IACD,CAAC,QAAQ,iBACR;AAAA,IACD,CAAC,QAAQ,0BACR;AAAA,IACD,CAAC,QAAQ,uBACR;AAAA,IACD,CAAC,QAAQ,uBACR;AAAA,EACF,EAAE,OAAO,OAAO;AAEhB,SAAO;AAAA,EAEP,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmCtB,UAAU,SACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA,EAAE,KAAK,IAAI,IACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wEAQJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASC,CAAC,QAAQ,gBACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAuBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;","names":[]}
|