Skip to content

Commit f123708

Browse files
committed
Stricter type-checking
1 parent fba5a1f commit f123708

File tree

6 files changed

+39
-15
lines changed

6 files changed

+39
-15
lines changed

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,25 @@
88
"devDependencies": {
99
"@eslint/compat": "^1.2.6",
1010
"@stylistic/eslint-plugin": "^4.0.0",
11+
"@tsconfig/node22": "^22.0.0",
12+
"@types/node": "^22.13.0",
1113
"@typescript-eslint/parser": "^8.23.0",
1214
"@vue/eslint-config-typescript": "^14.3.0",
1315
"eslint": "^9.18.0",
1416
"eslint-plugin-vue": "^9.32.0",
1517
"jiti": "^2.4.2",
1618
"lint-staged": "^15.4.3",
17-
"simple-git-hooks": "^2.11.1"
19+
"npm-run-all2": "^7.0.2",
20+
"simple-git-hooks": "^2.11.1",
21+
"typescript": "^5.7.3"
1822
},
1923
"scripts": {
2024
"clean": "pnpm run -r clean",
2125
"docs:dev": "pnpm run --filter ./packages/docs -r dev",
2226
"docs:build": "pnpm run --filter ./packages/docs -r build",
23-
"type-check": "pnpm run -r type-check",
27+
"type-check": "run-p type-check:*",
28+
"type-check:packages": "pnpm run -r type-check",
29+
"type-check:self": "tsc",
2430
"lint": "eslint",
2531
"lint:fix": "eslint --fix",
2632
"build": "pnpm run -r build",

packages/create-vue-lib/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
},
3939
"scripts": {
4040
"clean": "rimraf dist",
41-
"build": "run-s clean build:copy build:ts",
41+
"type-check": "tsc",
4242
"build:copy": "copyfiles -u 1 -a \"src/template/**\" dist",
4343
"build:ts": "tsup src/index.ts --format cjs --target node18",
44-
"build:dts": "tsup src/index.ts --dts --format cjs --target node18",
44+
"build": "run-s clean build:copy build:ts",
4545
"start": "node ./dist/index.cjs",
4646
"preinstall": "npx only-allow pnpm"
4747
}

packages/create-vue-lib/src/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ async function prompt(options: Omit<PromptObject, 'name'>) {
2424
return result.name
2525
}
2626
catch (cancelled) {
27-
console.log(cancelled.message)
27+
console.log((cancelled as { message: string }).message)
2828
process.exit(1)
2929
}
3030
}
@@ -103,7 +103,7 @@ Full documentation at https://skirtles-code.github.io/create-vue-lib/
103103
`
104104

105105
function processArgs(): Args {
106-
let argValues: object = {}
106+
let argValues: { help?: boolean, version?: boolean, extended?: boolean } = {}
107107

108108
const options = {
109109
extended: {
@@ -128,9 +128,9 @@ function processArgs(): Args {
128128
argValues = args.values
129129
}
130130
catch (err) {
131-
if (err.code === 'ERR_PARSE_ARGS_UNKNOWN_OPTION') {
131+
if ((err as { code: string }).code === 'ERR_PARSE_ARGS_UNKNOWN_OPTION') {
132132
console.log('Error:')
133-
console.log(err.message)
133+
console.log((err as { message: string }).message)
134134
console.log('See --help for valid options')
135135
process.exit(1)
136136
}
@@ -154,7 +154,7 @@ function processArgs(): Args {
154154
}
155155
}
156156

157-
function isValidPackageName(packageName) {
157+
function isValidPackageName(packageName: string) {
158158
// This is a bit stricter than npm requires, but we use the package name
159159
// to generate various other things, like directory names and the global
160160
// variable name, so we insist on having a 'safe' first character.
@@ -408,7 +408,7 @@ function copyFiles(templateFile: string, config: Config) {
408408
const template = fs.readFileSync(templatePath, 'utf-8')
409409
const content = template
410410
.replace(/@projectName@/g, config.mainPackageDirName)
411-
.replace(new RegExp(`@(${Object.keys(config).join('|')})@`, 'g'), (all, setting) => config[setting] ?? all)
411+
.replace(new RegExp(`@(${Object.keys(config).join('|')})@`, 'g'), (all, setting) => `${config[setting as keyof Config] ?? all}`)
412412

413413
fs.writeFileSync(targetPath, content)
414414
}

packages/create-vue-lib/tsconfig.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
"extends": "@tsconfig/node22/tsconfig.json",
33
"include": ["src/index.ts"],
44
"compilerOptions": {
5-
"strict": false,
6-
"resolveJsonModule": true,
5+
"noEmit": true,
6+
"module": "ESNext",
77
"moduleResolution": "Bundler",
8-
"module": "ESNext"
8+
"types": ["node"]
99
}
1010
}

pnpm-lock.yaml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tsconfig.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
{
2-
"files": ["eslint.config.mts"],
3-
"include": ["scripts/**/*"]
2+
"extends": "@tsconfig/node22/tsconfig.json",
3+
"include": ["eslint.config.*"],
4+
"compilerOptions": {
5+
"noEmit": true,
6+
"module": "ESNext",
7+
"moduleResolution": "Bundler",
8+
"types": ["node"]
9+
}
410
}

0 commit comments

Comments
 (0)