Skip to content

Commit b9c1c89

Browse files
committed
Fixed gitignore duplication bug
Resolves #48
1 parent 9cda43b commit b9c1c89

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

generator/index.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
const fs = require('fs')
22
const path = require('path')
33
const { generateKey } = require('../lib/signing-key')
4-
const gitignoreSnippet = `
5-
# Vue Browser Extension Output
6-
*.pem
7-
*.pub
8-
*.zip
9-
/artifacts
10-
`
4+
const gitignoreRules = ['# Vue Browser Extension Output', '*.pem', '*.pub', '*.zip', '/artifacts']
5+
6+
function regexEscape (rule) {
7+
return rule.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
8+
}
119

1210
module.exports = (api, _options) => {
1311
const options = Object.assign({}, _options)
@@ -174,7 +172,13 @@ module.exports = (api, _options) => {
174172
api.onCreateComplete(() => {
175173
const gitignoreFile = api.resolve('./.gitignore')
176174
const gitignore = fs.readFileSync(gitignoreFile, 'utf8')
177-
fs.writeFileSync(gitignoreFile, gitignore + gitignoreSnippet)
175+
176+
const gitignoreSnippet = gitignoreRules
177+
.filter((rule) => !new RegExp(`^${regexEscape(rule)}$`, 'gm').test(gitignore))
178+
.join('\n')
179+
if (gitignoreSnippet !== '' && gitignoreSnippet !== gitignoreRules[0]) {
180+
fs.writeFileSync(gitignoreFile, gitignore + '\n' + gitignoreSnippet + '\n')
181+
}
178182

179183
if (hasTs) {
180184
const tsconfigFile = api.resolve('./tsconfig.json')

0 commit comments

Comments
 (0)