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

Commit 6585d22

Browse files
committed
feat: lintfix and prettier scripts, fix lint-staged coverage
1 parent 4950578 commit 6585d22

File tree

7 files changed

+158
-35
lines changed

7 files changed

+158
-35
lines changed

Diff for: packages/cna-template/template/_.prettierignore

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
###
2+
# Place your Prettier ignore content here
3+
4+
###
5+
# .gitignore content is duplicated here due to https://github.com/prettier/prettier/issues/8506
6+
7+
# Created by .ignore support plugin (hsz.mobi)
8+
### Node template
9+
# Logs
10+
/logs
11+
*.log
12+
npm-debug.log*
13+
yarn-debug.log*
14+
yarn-error.log*
15+
16+
# Runtime data
17+
pids
18+
*.pid
19+
*.seed
20+
*.pid.lock
21+
22+
# Directory for instrumented libs generated by jscoverage/JSCover
23+
lib-cov
24+
25+
# Coverage directory used by tools like istanbul
26+
coverage
27+
28+
# nyc test coverage
29+
.nyc_output
30+
31+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
32+
.grunt
33+
34+
# Bower dependency directory (https://bower.io/)
35+
bower_components
36+
37+
# node-waf configuration
38+
.lock-wscript
39+
40+
# Compiled binary addons (https://nodejs.org/api/addons.html)
41+
build/Release
42+
43+
# Dependency directories
44+
node_modules/
45+
jspm_packages/
46+
47+
# TypeScript v1 declaration files
48+
typings/
49+
50+
# Optional npm cache directory
51+
.npm
52+
53+
# Optional eslint cache
54+
.eslintcache
55+
56+
# Optional REPL history
57+
.node_repl_history
58+
59+
# Output of 'npm pack'
60+
*.tgz
61+
62+
# Yarn Integrity file
63+
.yarn-integrity
64+
65+
# dotenv environment variables file
66+
.env
67+
68+
# parcel-bundler cache (https://parceljs.org/)
69+
.cache
70+
71+
# next.js build output
72+
.next
73+
74+
# nuxt.js build output
75+
.nuxt
76+
77+
# Nuxt generate
78+
dist
79+
80+
# vuepress build output
81+
.vuepress/dist
82+
83+
# Serverless directories
84+
.serverless
85+
86+
# IDE / Editor
87+
.idea
88+
89+
# Service worker
90+
sw.*
91+
92+
# macOS
93+
.DS_Store
94+
95+
# Vim swap files
96+
*.swp
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
_
1+
_

Diff for: packages/cna-template/template/nuxt/package.js

+30-7
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,25 @@ module.exports = {
1212

1313
// Linter
1414
const eslint = linter.includes('eslint')
15-
const lintStaged = eslint && linter.includes('lintStaged')
15+
const lintStaged = linter.includes('lintStaged')
1616
const stylelint = linter.includes('stylelint')
1717
const prettier = linter.includes('prettier')
1818
const commitlint = linter.includes('commitlint')
1919
const lintScripts = {
2020
eslint: '<%= pmRun %> lint:js',
21-
stylelint: '<%= pmRun %> lint:style'
21+
stylelint: '<%= pmRun %> lint:style',
22+
prettier: '<%= pmRun %> lint:prettier'
23+
}
24+
const lintfixScripts = {
25+
eslint: "<%= pmRun %> lint:js <%= pm === 'npm' ? '-- ' : '' %>--fix",
26+
stylelint: "<%= pmRun %> lint:style <%= pm === 'npm' ? '-- ' : '' %>--fix",
27+
prettier: 'prettier --write --list-different .'
2228
}
2329

2430
if (!eslint) {
31+
lintStaged && delete pkg['lint-staged']["*.{js,<%= typescript ? 'ts,' : '' %>vue}"]
2532
delete lintScripts.eslint
33+
delete lintfixScripts.eslint
2634
delete pkg.scripts['lint:js']
2735
delete pkg.devDependencies['@nuxtjs/eslint-config']
2836
delete pkg.devDependencies['@nuxtjs/eslint-module']
@@ -36,15 +44,20 @@ module.exports = {
3644
delete pkg.devDependencies['lint-staged']
3745
}
3846
if (!stylelint) {
39-
lintStaged && delete pkg['lint-staged']['*.{css,vue}']
47+
lintStaged && delete pkg['lint-staged']['*.{css,scss,sass,html,vue}']
4048
delete lintScripts.stylelint
49+
delete lintfixScripts.stylelint
4150
delete pkg.scripts['lint:style']
4251
delete pkg.devDependencies['@nuxtjs/stylelint-module']
4352
delete pkg.devDependencies.stylelint
4453
delete pkg.devDependencies['stylelint-config-standard']
4554
delete pkg.devDependencies['stylelint-config-prettier']
4655
}
4756
if (!prettier) {
57+
lintStaged && delete pkg['lint-staged']['*.**']
58+
delete pkg.scripts['lint:prettier']
59+
delete lintScripts.prettier
60+
delete lintfixScripts.prettier
4861
delete pkg.devDependencies['eslint-config-prettier']
4962
delete pkg.devDependencies['stylelint-config-prettier']
5063
delete pkg.devDependencies.prettier
@@ -53,15 +66,25 @@ module.exports = {
5366
delete pkg.devDependencies['@commitlint/config-conventional']
5467
delete pkg.devDependencies['@commitlint/cli']
5568
}
56-
if (!lintStaged && !commitlint) {
57-
delete pkg.devDependencies.husky
58-
delete pkg.scripts.prepare
59-
}
6069

6170
const lintScript = Object.values(lintScripts).join(' && ')
6271
if (lintScript) {
6372
pkg.scripts.lint = lintScript
6473
}
74+
const lintfixScript = Object.values(lintfixScripts).join(' && ')
75+
if (lintfixScript) {
76+
pkg.scripts.lintfix = lintfixScript
77+
}
78+
79+
if (!lintStaged && !commitlint) {
80+
delete pkg.devDependencies.husky
81+
delete pkg.scripts.prepare
82+
} else {
83+
// Move prepare to make it the last script
84+
const prepare = pkg.scripts.prepare
85+
delete pkg.scripts.prepare
86+
pkg.scripts.prepare = prepare
87+
}
6588

6689
// Modules
6790
if (!features.includes('axios')) {

Diff for: packages/cna-template/template/nuxt/package.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
"build": "nuxt build",
55
"start": "nuxt start",
66
"generate": "nuxt generate",
7-
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
8-
"lint:style": "stylelint \"**/*.{vue,css}\" --ignore-path .gitignore",
7+
"lint:js": "eslint --ext \".js<%= typescript ? ',.ts' : '' %>,.vue\" --ignore-path .gitignore .",
8+
"lint:style": "stylelint \"**/*.{css,scss,sass,html,vue}\" --ignore-path .gitignore",
9+
"lint:prettier": "prettier --check .",
910
"prepare": "husky install"
1011
},
1112
"lint-staged": {
12-
"*.{js,vue}": "eslint",
13-
"*.{css,vue}": "stylelint"
13+
"*.{js,<%= typescript ? 'ts,' : '' %>vue}": "eslint --cache",
14+
"*.{css,scss,sass,html,vue}": "stylelint",
15+
"*.**": "prettier --check --ignore-unknown"
1416
},
1517
"dependencies": {
1618
"@nuxt/content": "^1.14.0",

Diff for: packages/create-nuxt-app/lib/saofile.js

+4-17
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ module.exports = {
103103
files: '*',
104104
filters: {
105105
'_.eslintrc.js': 'linter.includes("eslint")',
106+
'_.prettierignore': 'linter.includes("prettier")',
106107
'_.prettierrc': 'linter.includes("prettier")',
107108
'_jsconfig.json': 'devTools.includes("jsconfig.json")',
108109
'tsconfig.json': 'language.includes("ts")',
@@ -119,6 +120,7 @@ module.exports = {
119120
patterns: {
120121
gitignore: '.gitignore',
121122
'_package.json': 'package.json',
123+
'_.prettierignore': '.prettierignore',
122124
'_.prettierrc': '.prettierrc',
123125
'_.eslintrc.js': '.eslintrc.js',
124126
'_jsconfig.json': 'jsconfig.json',
@@ -167,23 +169,8 @@ module.exports = {
167169

168170
await this.npmInstall({ npmClient: this.answers.pm })
169171

170-
if (this.answers.linter.includes('eslint')) {
171-
const options = ['run', 'lint:js', '--', '--fix']
172-
if (this.answers.pm === 'yarn') {
173-
options.splice(2, 1)
174-
}
175-
spawn.sync(this.answers.pm, options, {
176-
cwd: this.outDir,
177-
stdio: 'inherit'
178-
})
179-
}
180-
181-
if (this.answers.linter.includes('stylelint')) {
182-
const options = ['run', 'lint:style', '--', '--fix']
183-
if (this.answers.pm === 'yarn') {
184-
options.splice(2, 1)
185-
}
186-
spawn.sync(this.answers.pm, options, {
172+
if (['eslint', 'stylelint', 'prettier'].some(linter => this.answers.linter.includes(linter))) {
173+
spawn.sync(this.answers.pm, ['run', 'lintfix'], {
187174
cwd: this.outDir,
188175
stdio: 'inherit'
189176
})

Diff for: packages/create-nuxt-app/test/snapshots/index.test.js.md

+21-6
Original file line numberDiff line numberDiff line change
@@ -2069,6 +2069,7 @@ Generated by [AVA](https://avajs.dev).
20692069
'.husky/commit-msg',
20702070
'.husky/common.sh',
20712071
'.husky/pre-commit',
2072+
'.prettierignore',
20722073
'.prettierrc',
20732074
'README.md',
20742075
'commitlint.config.js',
@@ -2108,17 +2109,20 @@ Generated by [AVA](https://avajs.dev).
21082109
'stylelint-config-standard': '^22.0.0',
21092110
},
21102111
'lint-staged': {
2111-
'*.{css,vue}': 'stylelint',
2112-
'*.{js,vue}': 'eslint',
2112+
'*.**': 'prettier --check --ignore-unknown',
2113+
'*.{css,scss,sass,html,vue}': 'stylelint',
2114+
'*.{js,vue}': 'eslint --cache',
21132115
},
21142116
private: true,
21152117
scripts: {
21162118
build: 'nuxt build',
21172119
dev: 'nuxt',
21182120
generate: 'nuxt generate',
2119-
lint: 'yarn lint:js && yarn lint:style',
2121+
lint: 'yarn lint:js && yarn lint:style && yarn lint:prettier',
21202122
'lint:js': 'eslint --ext ".js,.vue" --ignore-path .gitignore .',
2121-
'lint:style': 'stylelint "**/*.{vue,css}" --ignore-path .gitignore',
2123+
'lint:prettier': 'prettier --check .',
2124+
'lint:style': 'stylelint "**/*.{css,scss,sass,html,vue}" --ignore-path .gitignore',
2125+
lintfix: 'yarn lint:js --fix && yarn lint:style --fix && prettier --write --list-different .',
21222126
prepare: 'husky install',
21232127
start: 'nuxt start',
21242128
},
@@ -2213,6 +2217,7 @@ Generated by [AVA](https://avajs.dev).
22132217
generate: 'nuxt generate',
22142218
lint: 'yarn lint:js',
22152219
'lint:js': 'eslint --ext ".js,.vue" --ignore-path .gitignore .',
2220+
lintfix: 'yarn lint:js --fix',
22162221
start: 'nuxt start',
22172222
},
22182223
}
@@ -2271,6 +2276,7 @@ Generated by [AVA](https://avajs.dev).
22712276
[
22722277
'.editorconfig',
22732278
'.gitignore',
2279+
'.prettierignore',
22742280
'.prettierrc',
22752281
'README.md',
22762282
'components/NuxtLogo.vue',
@@ -2298,6 +2304,9 @@ Generated by [AVA](https://avajs.dev).
22982304
build: 'nuxt build',
22992305
dev: 'nuxt',
23002306
generate: 'nuxt generate',
2307+
lint: 'yarn lint:prettier',
2308+
'lint:prettier': 'prettier --check .',
2309+
lintfix: 'prettier --write --list-different .',
23012310
start: 'nuxt start',
23022311
},
23032312
}
@@ -2371,12 +2380,17 @@ Generated by [AVA](https://avajs.dev).
23712380
'core-js': '^3.16.2',
23722381
nuxt: '^2.15.8',
23732382
},
2374-
devDependencies: {},
2383+
devDependencies: {
2384+
husky: '^6.0.0',
2385+
'lint-staged': '^10.5.4',
2386+
},
2387+
'lint-staged': {},
23752388
private: true,
23762389
scripts: {
23772390
build: 'nuxt build',
23782391
dev: 'nuxt',
23792392
generate: 'nuxt generate',
2393+
prepare: 'husky install',
23802394
start: 'nuxt start',
23812395
},
23822396
}
@@ -2462,7 +2476,8 @@ Generated by [AVA](https://avajs.dev).
24622476
dev: 'nuxt',
24632477
generate: 'nuxt generate',
24642478
lint: 'yarn lint:style',
2465-
'lint:style': 'stylelint "**/*.{vue,css}" --ignore-path .gitignore',
2479+
'lint:style': 'stylelint "**/*.{css,scss,sass,html,vue}" --ignore-path .gitignore',
2480+
lintfix: 'yarn lint:style --fix',
24662481
start: 'nuxt start',
24672482
},
24682483
}
368 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)