|
1 | 1 | const { dirname, join, relative } = require('path')
|
| 2 | +const fs = require('fs') |
2 | 3 | const spawn = require('cross-spawn')
|
3 | 4 | const validate = require('validate-npm-package-name')
|
4 | 5 | const pkg = require('./package')
|
5 | 6 |
|
6 | 7 | const cnaTemplateDir = join(dirname(require.resolve('cna-template/package.json')))
|
7 | 8 | const templateDir = join(cnaTemplateDir, 'template')
|
8 | 9 | const frameworksDir = join(templateDir, 'frameworks')
|
| 10 | +const addExecutable = filename => new Promise( |
| 11 | + resolve => fs.chmod(filename, 0o755, resolve) |
| 12 | +) |
9 | 13 |
|
10 | 14 | module.exports = {
|
11 | 15 | prompts: require('./prompts'),
|
@@ -50,14 +54,22 @@ module.exports = {
|
50 | 54 | })
|
51 | 55 | validation.errors && validation.errors.length && process.exit(1)
|
52 | 56 |
|
| 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 | + |
53 | 62 | const actions = [{
|
54 | 63 | type: 'add',
|
55 | 64 | files: '**',
|
56 | 65 | templateDir: join(templateDir, 'nuxt'),
|
57 | 66 | filters: {
|
58 | 67 | 'static/icon.png': 'features.includes("pwa")',
|
59 | 68 | '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 |
61 | 73 | }
|
62 | 74 | }]
|
63 | 75 |
|
@@ -144,6 +156,14 @@ module.exports = {
|
144 | 156 | this.gitInit()
|
145 | 157 | }
|
146 | 158 |
|
| 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 | + |
147 | 167 | await this.npmInstall({ npmClient: this.answers.pm })
|
148 | 168 |
|
149 | 169 | if (this.answers.linter.includes('eslint')) {
|
|
0 commit comments