-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BREAKING CHANGES: - Upgrade `dotenv` to v8.0.0 - Change `only` options to `nul`
- Loading branch information
1 parent
6056e24
commit 898fe3a
Showing
45 changed files
with
6,145 additions
and
19,179 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Common | ||
node_modules | ||
dist | ||
.nuxt | ||
coverage | ||
|
||
# Plugin | ||
lib/plugin.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,5 @@ | ||
module.exports = require('nuxt-module-builder/eslint') | ||
module.exports = { | ||
extends: [ | ||
'@nuxtjs' | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,6 @@ node_modules | |
*.log* | ||
.nuxt | ||
.vscode | ||
.DS_STORE | ||
.DS_Store | ||
coverage | ||
dist | ||
dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
MIT License | ||
|
||
Copyright (c) Julien Tant <[email protected]> | ||
Copyright (c) Nuxt Community | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,28 @@ | ||
# @nuxtjs/dotenv module | ||
# @nuxtjs/dotenv | ||
|
||
[![npm (scoped with tag)](https://img.shields.io/npm/v/@nuxtjs/dotenv/latest.svg?style=flat-square)](https://npmjs.com/package/@nuxtjs/dotenv) | ||
[![npm](https://img.shields.io/npm/dt/@nuxtjs/dotenv.svg?style=flat-square)](https://npmjs.com/package/@nuxtjs/dotenv) | ||
[![CircleCI](https://img.shields.io/circleci/project/github/nuxt-community/dotenv-module.svg?style=flat-square)](https://circleci.com/gh/nuxt-community/dotenv-module) | ||
[![Codecov](https://img.shields.io/codecov/c/github/nuxt-community/dotenv-module.svg?style=flat-square)](https://codecov.io/gh/nuxt-community/dotenv-module) | ||
[![Dependencies](https://david-dm.org/nuxt-community/dotenv-module/status.svg?style=flat-square)](https://david-dm.org/nuxt-community/dotenv-module) | ||
|
||
|
||
[![js-standard-style](https://cdn.rawgit.com/standard/standard/master/badge.svg)](http://standardjs.com) | ||
[![npm version][npm-version-src]][npm-version-href] | ||
[![npm downloads][npm-downloads-src]][npm-downloads-href] | ||
[![Circle CI][circle-ci-src]][circle-ci-href] | ||
[![Codecov][codecov-src]][codecov-href] | ||
[![License][license-src]][license-href] | ||
|
||
> A nuxt.js module that loads your .env file into your context options | ||
[📖 **Release Notes**](./CHANGELOG.md) | ||
|
||
## Features | ||
|
||
The module loads variables from your .env file directly into your nuxt.js application `context` and `process.env`. | ||
The module loads variables from your .env file directly into your nuxt.js application `context` and `process.env`. | ||
|
||
## Setup | ||
- Add `@nuxtjs/dotenv` dependency using yarn or npm to your project | ||
- Add `@nuxtjs/dotenv` to `modules` section of `nuxt.config.js` | ||
|
||
1. Add `@nuxtjs/dotenv` dependency to your project | ||
|
||
```bash | ||
yarn add @nuxtjs/dotenv # or npm install @nuxtjs/dotenv | ||
``` | ||
|
||
2. Add `@nuxtjs/dotenv` to the `modules` section of `nuxt.config.js` | ||
|
||
```js | ||
{ | ||
|
@@ -28,88 +31,134 @@ The module loads variables from your .env file directly into your nuxt.js applic | |
'@nuxtjs/dotenv', | ||
|
||
// With options | ||
['@nuxtjs/dotenv', { /* module options */ }], | ||
] | ||
['@nuxtjs/dotenv', { /* module options */ }] | ||
] | ||
} | ||
``` | ||
|
||
## Usage | ||
### Using top level options | ||
|
||
After creating your .env file in the project root, simply run your usual `npm run dev`. The variable inside the .env file will be added to the context (`context.env`) and process (`process.env`) | ||
```js | ||
{ | ||
modules: [ | ||
'@nuxtjs/dotenv' | ||
], | ||
dotenv: { | ||
/* module options */ | ||
} | ||
} | ||
``` | ||
|
||
## Options | ||
|
||
### only | ||
### `only` | ||
|
||
- Default: `null` | ||
|
||
If you want to restrict what's accessible into the context, you can can pass to the module options an `only` array with the keys you want to allow. | ||
|
||
```js | ||
{ | ||
modules: [ | ||
['@nuxtjs/dotenv', { only: ['some_key'] }], | ||
['@nuxtjs/dotenv', { only: ['some_key'] }] | ||
] | ||
} | ||
``` | ||
|
||
### path | ||
### `path` | ||
|
||
- Default: `srcDir` | ||
|
||
By default, the we'll be loading the `.env` file from the root of your project. If you want to change the path of the folder where we can find the `.env` file, then use the `path` option. | ||
|
||
```js | ||
{ | ||
modules: [ | ||
['@nuxtjs/dotenv', { path: '/path/to/my/global/env/' }], | ||
['@nuxtjs/dotenv', { path: '/path/to/my/global/env/' }] | ||
] | ||
} | ||
``` | ||
|
||
Note that this is the path to the **folder** where the `.env` file live, not to the `.env` file itself. | ||
> **Note:** that this is the path to the *folder* where the `.env` file live, not to the `.env` file itself. | ||
The path can be absolute or relative. | ||
|
||
### systemvars | ||
|
||
By default this is false and variables from your system will be ignored. Setting this to true will allow your system set variables to work. | ||
- Default: `false` | ||
|
||
By default this is false and variables from your system will be ignored. | ||
Setting this to true will allow your system set variables to work. | ||
|
||
```js | ||
{ | ||
modules: [ | ||
['@nuxtjs/dotenv', { systemvars: true }], | ||
['@nuxtjs/dotenv', { systemvars: true }] | ||
] | ||
} | ||
``` | ||
|
||
### filename | ||
|
||
- Default: `.env` | ||
|
||
We can override the filename when we need to use different config files for different environments. | ||
|
||
```js | ||
{ | ||
modules: [ | ||
['@nuxtjs/dotenv', { filename: '.env.prod' }], | ||
['@nuxtjs/dotenv', { filename: '.env.prod' }] | ||
] | ||
} | ||
``` | ||
|
||
## Usage | ||
|
||
After creating your .env file in the project root, simply run your usual `yarn dev` or `npm run dev`. | ||
The variable inside the .env file will be added to the context (`context.env`) and process (`process.env`) | ||
|
||
## Using .env file in nuxt.config.js | ||
|
||
The `dotenv-module` won't overload the environment variables of the process running your build. | ||
This module won't overload the environment variables of the process running your build. | ||
|
||
If you need to use variables from your .env file at this moment, just append `require('dotenv').config()` to your `nuxt.config.js` : | ||
If you need to use variables from your .env file at this moment, | ||
just append `require('dotenv').config()` to your `nuxt.config.js` : | ||
|
||
```js | ||
require('dotenv').config() | ||
|
||
module.exports = { | ||
// your usual nuxt config. | ||
// your usual nuxt config. | ||
} | ||
``` | ||
|
||
This will works thanks to the `dotenv` library provided by this module as a dependency. If you decided to ignore some values from your `.env` file in the module configuration, this won't apply here. | ||
This will works thanks to the `dotenv` library provided by this module as a dependency. | ||
If you decided to ignore some values from your `.env` file in the module configuration, this won't apply here. | ||
|
||
## Development | ||
|
||
1. Clone this repository | ||
2. Install dependencies using `yarn install` or `npm install` | ||
3. Start development server using `npm run dev` | ||
|
||
## License | ||
|
||
[MIT License](./LICENSE) | ||
|
||
Copyright (c) Julien Tant <[email protected]> | ||
Copyright (c) Nuxt Community | ||
|
||
<!-- Badges --> | ||
[npm-version-src]: https://img.shields.io/npm/v/@nuxtjs/dotenv/latest.svg?style=flat-square | ||
[npm-version-href]: https://npmjs.com/package/@nuxtjs/dotenv | ||
|
||
[npm-downloads-src]: https://img.shields.io/npm/dt/@nuxtjs/dotenv.svg?style=flat-square | ||
[npm-downloads-href]: https://npmjs.com/package/@nuxtjs/dotenv | ||
|
||
[circle-ci-src]: https://img.shields.io/circleci/project/github/nuxt-community/dotenv-module.svg?style=flat-square | ||
[circle-ci-href]: https://circleci.com/gh/nuxt-community/dotenv-module | ||
|
||
[codecov-src]: https://img.shields.io/codecov/c/github/nuxt-community/dotenv-module.svg?style=flat-square | ||
[codecov-href]: https://codecov.io/gh/nuxt-community/dotenv-module | ||
|
||
[license-src]: https://img.shields.io/npm/l/@nuxtjs/dotenv.svg?style=flat-square | ||
[license-href]: https://npmjs.com/package/@nuxtjs/dotenv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
module.exports = { | ||
extends: [ | ||
'@commitlint/config-conventional' | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module.exports = { | ||
hooks: { | ||
'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS', | ||
'pre-commit': 'yarn lint', | ||
'pre-push': 'yarn lint' | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
module.exports = { | ||
testEnvironment: 'node', | ||
collectCoverage: true, | ||
collectCoverageFrom: [ | ||
'lib/**/*.js', | ||
'!lib/plugin.js' | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
const consola = require('consola') | ||
|
||
module.exports = consola.withScope('nuxt:dotenv') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
const { readFileSync, accessSync, constants } = require('fs') | ||
const { join } = require('path') | ||
const { parse } = require('dotenv') | ||
const logger = require('./logger') | ||
|
||
module.exports = function (moduleOptions) { | ||
const options = { | ||
only: null, | ||
path: this.options.srcDir, | ||
filename: '.env', | ||
systemvars: false, | ||
...this.options.dotenv, | ||
...moduleOptions | ||
} | ||
|
||
const envFilePath = join(options.path, options.filename) | ||
|
||
try { | ||
accessSync(envFilePath, constants.R_OK) | ||
} catch (err) { | ||
logger.warn(`No \`${options.filename}\` file found in \`${options.path}\`.`) | ||
return | ||
} | ||
|
||
const envConfig = parse(readFileSync(envFilePath)) | ||
|
||
if (options.systemvars) { | ||
Object.keys(process.env).map((key) => { | ||
if (!(key in envConfig)) { | ||
envConfig[key] = process.env[key] | ||
} | ||
}) | ||
} | ||
|
||
Object.keys(envConfig).forEach((key) => { | ||
if (!Array.isArray(options.only) || options.only.includes(key)) { | ||
this.options.env[key] = this.options.env[key] || envConfig[key] | ||
} | ||
}) | ||
} | ||
|
||
module.exports.meta = require('../package.json') |
Oops, something went wrong.