forked from nuxt/create-nuxt-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpackage.js
95 lines (88 loc) · 2.96 KB
/
package.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
module.exports = {
apply (pkg, generator) {
// edge
const { cliOptions = {} } = generator.sao.opts
const edge = cliOptions.edge ? '-edge' : ''
if (edge) {
delete pkg.dependencies.nuxt
pkg.dependencies['nuxt-edge'] = 'latest'
}
const { features, language = [], linter = [] } = generator.answers
// Linter
const eslint = linter.includes('eslint')
const lintStaged = eslint && linter.includes('lintStaged')
const stylelint = linter.includes('stylelint')
const prettier = linter.includes('prettier')
const commitlint = linter.includes('commitlint')
const lintScripts = {
eslint: '<%= pmRun %> lint:js',
stylelint: '<%= pmRun %> lint:style'
}
if (!eslint) {
delete lintScripts.eslint
delete pkg.scripts['lint:js']
delete pkg.devDependencies['@nuxtjs/eslint-config']
delete pkg.devDependencies['@nuxtjs/eslint-module']
delete pkg.devDependencies['@babel/eslint-parser']
delete pkg.devDependencies.eslint
delete pkg.devDependencies['eslint-plugin-nuxt']
delete pkg.devDependencies['eslint-plugin-vue']
}
if (!lintStaged) {
delete pkg['lint-staged']
delete pkg.devDependencies['lint-staged']
}
if (!stylelint) {
lintStaged && delete pkg['lint-staged']['*.{css,vue}']
delete lintScripts.stylelint
delete pkg.scripts['lint:style']
delete pkg.devDependencies['@nuxtjs/stylelint-module']
delete pkg.devDependencies.stylelint
delete pkg.devDependencies['stylelint-config-standard']
delete pkg.devDependencies['stylelint-config-prettier']
}
if (!eslint || !prettier) {
delete pkg.devDependencies['eslint-plugin-prettier']
}
if (!prettier) {
delete pkg.devDependencies['eslint-config-prettier']
delete pkg.devDependencies['stylelint-config-prettier']
delete pkg.devDependencies.prettier
}
if (!commitlint) {
delete pkg.devDependencies['@commitlint/config-conventional']
delete pkg.devDependencies['@commitlint/cli']
}
if (!lintStaged && !commitlint) {
delete pkg.devDependencies.husky
delete pkg.scripts.prepare
}
const lintScript = Object.values(lintScripts).join(' && ')
if (lintScript) {
pkg.scripts.lint = lintScript
}
// Modules
if (!features.includes('axios')) {
delete pkg.dependencies['@nuxtjs/axios']
}
if (!features.includes('pwa')) {
delete pkg.dependencies['@nuxtjs/pwa']
}
if (!features.includes('content')) {
delete pkg.dependencies['@nuxt/content']
}
// TS
const typescript = language.includes('ts')
if (!typescript) {
delete pkg.devDependencies['@nuxt/types']
delete pkg.devDependencies['@nuxt/typescript-build']
}
if (!typescript || !eslint) {
delete pkg.devDependencies['@nuxtjs/eslint-config-typescript']
}
if (typescript && eslint) {
delete pkg.devDependencies['@nuxtjs/eslint-config']
}
return pkg
}
}