Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 5ee3feb

Browse files
authored
feat(template): update to husky v6 (#715)
1 parent 8c9b77d commit 5ee3feb

File tree

10 files changed

+401
-374
lines changed

10 files changed

+401
-374
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"@nuxtjs/eslint-config": "^6.0.0",
2525
"ava": "^3.15.0",
2626
"eslint": "^7.22.0",
27-
"husky": "^5.1.3",
27+
"husky": "^6.0.0",
2828
"lerna": "^4.0.0",
2929
"stylelint": "^13.12.0",
3030
"stylelint-config-standard": "^21.0.0"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
_
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
. "$(dirname "$0")/_/husky.sh"
3+
4+
<%= pmRun %> commitlint --edit $1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
. "$(dirname "$0")/_/husky.sh"
3+
4+
<%= pmRun %> lint-staged

packages/cna-template/template/nuxt/package.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ module.exports = {
3232
delete pkg.devDependencies['eslint-plugin-vue']
3333
}
3434
if (!lintStaged) {
35-
delete pkg.husky
3635
delete pkg['lint-staged']
37-
delete pkg.devDependencies.husky
3836
delete pkg.devDependencies['lint-staged']
3937
}
4038
if (!stylelint) {
@@ -53,10 +51,13 @@ module.exports = {
5351
delete pkg.devDependencies.prettier
5452
}
5553
if (!commitlint) {
56-
lintStaged && delete pkg.husky.hooks['commit-msg']
5754
delete pkg.devDependencies['@commitlint/config-conventional']
5855
delete pkg.devDependencies['@commitlint/cli']
5956
}
57+
if (!lintStaged && !commitlint) {
58+
delete pkg.devDependencies.husky
59+
delete pkg.scripts.postinstall
60+
}
6061

6162
const lintScript = Object.values(lintScripts).join(' && ')
6263
if (lintScript) {

packages/cna-template/template/nuxt/package.json

+3-8
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,13 @@
55
"start": "nuxt start",
66
"generate": "nuxt generate",
77
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
8-
"lint:style": "stylelint \"**/*.{vue,css}\" --ignore-path .gitignore"
8+
"lint:style": "stylelint \"**/*.{vue,css}\" --ignore-path .gitignore",
9+
"postinstall": "husky install"
910
},
1011
"lint-staged": {
1112
"*.{js,vue}": "eslint",
1213
"*.{css,vue}": "stylelint"
1314
},
14-
"husky": {
15-
"hooks": {
16-
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
17-
"pre-commit": "lint-staged"
18-
}
19-
},
2015
"dependencies": {
2116
"@nuxt/content": "^1.14.0",
2217
"@nuxtjs/axios": "^5.13.1",
@@ -39,7 +34,7 @@
3934
"eslint-plugin-nuxt": "^2.0.0",
4035
"eslint-plugin-prettier": "^3.3.1",
4136
"eslint-plugin-vue": "^7.7.0",
42-
"husky": "^4.3.8",
37+
"husky": "^6.0.0",
4338
"lint-staged": "^10.5.4",
4439
"prettier": "^2.2.1",
4540
"stylelint": "^13.12.0",

packages/create-nuxt-app/lib/saofile.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
const { dirname, join, relative } = require('path')
2+
const fs = require('fs')
23
const spawn = require('cross-spawn')
34
const validate = require('validate-npm-package-name')
45
const pkg = require('./package')
56

67
const cnaTemplateDir = join(dirname(require.resolve('cna-template/package.json')))
78
const templateDir = join(cnaTemplateDir, 'template')
89
const frameworksDir = join(templateDir, 'frameworks')
10+
const addExecutable = filename => new Promise(
11+
resolve => fs.chmod(filename, 0o755, resolve)
12+
)
913

1014
module.exports = {
1115
prompts: require('./prompts'),
@@ -50,14 +54,22 @@ module.exports = {
5054
})
5155
validation.errors && validation.errors.length && process.exit(1)
5256

57+
const { linter } = this.answers
58+
const eslint = linter.includes('eslint')
59+
const lintStaged = eslint && linter.includes('lintStaged')
60+
const commitlint = linter.includes('commitlint')
61+
5362
const actions = [{
5463
type: 'add',
5564
files: '**',
5665
templateDir: join(templateDir, 'nuxt'),
5766
filters: {
5867
'static/icon.png': 'features.includes("pwa")',
5968
'content/hello.md': 'features.includes("content")',
60-
'pages/content.vue': 'features.includes("content")'
69+
'pages/content.vue': 'features.includes("content")',
70+
'.husky/.gitignore': lintStaged || commitlint,
71+
'.husky/commit-msg': commitlint,
72+
'.husky/pre-commit': lintStaged
6173
}
6274
}]
6375

@@ -144,6 +156,14 @@ module.exports = {
144156
this.gitInit()
145157
}
146158

159+
const huskyDir = join(this.outDir, '.husky')
160+
if (this.answers.linter.includes('lintStaged')) {
161+
await addExecutable(join(huskyDir, 'pre-commit'))
162+
}
163+
if (this.answers.linter.includes('commitlint')) {
164+
await addExecutable(join(huskyDir, 'commit-msg'))
165+
}
166+
147167
await this.npmInstall({ npmClient: this.answers.pm })
148168

149169
if (this.answers.linter.includes('eslint')) {

0 commit comments

Comments
 (0)