Fix newline character parsing in .env files

This commit is contained in:
Todd Bluhm 2019-05-04 03:50:48 -05:00
parent 9171dc06cb
commit 25de68f281
No known key found for this signature in database
GPG Key ID: 9CF312607477B8AB
6 changed files with 23 additions and 40 deletions

View File

@ -7,6 +7,7 @@
- **Change**: Update package-lock.json file
- **Feature**: Added support for asyncronous .env and .rc files
- **Feature**: Added support for a programmatic API
- **Fix**: Keep newline (`\n`) characters intact when parsing env files
- **Change**: Added node v10 and v12 to build automation
## 8.0.2

View File

@ -53,7 +53,9 @@ export function parseEnvVars (envString: string): { [key: string]: string } {
const value = match[3].trim() || ''
// remove any surrounding quotes
matches[key] = value.replace(/(^['"]|['"]$)/g, '')
matches[key] = value
.replace(/(^['"]|['"]$)/g, '')
.replace(`\\n`, `\n`)
}
return matches
}
@ -78,4 +80,4 @@ export function stripComments (envString: string): string {
export function stripEmptyLines (envString: string): string {
const emptyLinesRegex = /(^\n)/gim
return envString.replace(emptyLinesRegex, '')
}
}

View File

@ -97,30 +97,19 @@ describe('getEnvFileVars', (): void => {
it('should parse a json file', async (): Promise<void> => {
const env = await getEnvFileVars('./test/test-files/test.json')
assert.deepEqual(env, {
'development': {
'THANKS': 'FOR ALL THE FISH',
'ANSWER': 0
},
'production': {
'THANKS': 'FOR WHAT?!',
'ANSWER': 42,
'ONLY': 'IN PRODUCTION'
}
'THANKS': 'FOR WHAT?!',
'ANSWER': 42,
'ONLY': 'IN PRODUCTION',
'GALAXY': 'hitch\nhiking'
})
})
it('should parse a js file', async (): Promise<void> => {
const env = await getEnvFileVars('./test/test-files/test.js')
assert.deepEqual(env, {
'development': {
'THANKS': 'FOR ALL THE FISH',
'ANSWER': 0
},
'production': {
'THANKS': 'FOR WHAT?!',
'ANSWER': 42,
'ONLY': 'IN PRODUCTION'
}
'THANKS': 'FOR ALL THE FISH',
'ANSWER': 0,
'GALAXY': 'hitch\nhiking'
})
})
@ -137,7 +126,8 @@ describe('getEnvFileVars', (): void => {
assert.deepEqual(env, {
'THANKS': 'FOR WHAT?!',
'ANSWER': '42',
'ONLY': 'IN=PRODUCTION'
'ONLY': 'IN=PRODUCTION',
'GALAXY': 'hitch\nhiking'
})
})

View File

@ -1,3 +1,4 @@
THANKS = FOR WHAT?!
ANSWER=42
ONLY= "IN=PRODUCTION"
ONLY= "IN=PRODUCTION"
GALAXY="hitch\nhiking"

View File

@ -1,11 +1,5 @@
module.exports = {
'development': {
'THANKS': 'FOR ALL THE FISH',
'ANSWER': 0
},
'production': {
'THANKS': 'FOR WHAT?!',
'ANSWER': 42,
'ONLY': 'IN PRODUCTION'
}
'THANKS': 'FOR ALL THE FISH',
'ANSWER': 0,
'GALAXY': 'hitch\nhiking'
}

View File

@ -1,11 +1,6 @@
{
"development": {
"THANKS": "FOR ALL THE FISH",
"ANSWER": 0
},
"production": {
"THANKS": "FOR WHAT?!",
"ANSWER": 42,
"ONLY": "IN PRODUCTION"
}
"THANKS": "FOR WHAT?!",
"ANSWER": 42,
"ONLY": "IN PRODUCTION",
"GALAXY": "hitch\nhiking"
}