feat(nuxi): support --dotenv for dev, build and preview commands (#7660)

This commit is contained in:
Christian Preston 2022-09-26 06:36:10 -04:00 committed by GitHub
parent 4c5048826c
commit 2e080c259f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 18 additions and 10 deletions

View File

@ -1,7 +1,7 @@
# `nuxi build` # `nuxi build`
```{bash} ```{bash}
npx nuxi build [rootDir] npx nuxi build [rootDir] [--prerender] [--dotenv]
``` ```
The `build` command creates a `.output` directory with all your application, server and dependencies ready for production. The `build` command creates a `.output` directory with all your application, server and dependencies ready for production.
@ -9,6 +9,7 @@ The `build` command creates a `.output` directory with all your application, ser
Option | Default | Description Option | Default | Description
-------------------------|-----------------|------------------ -------------------------|-----------------|------------------
`rootDir` | `.` | The root directory of the application to bundle. `rootDir` | `.` | The root directory of the application to bundle.
`prerender` | `false` | Pre-render every route of your application. (**note:** This is an experimental flag. The behavior might be changed.) `--prerender` | `false` | Pre-render every route of your application. (**note:** This is an experimental flag. The behavior might be changed.)
`--dotenv` | `.` | Point to another `.env` file to load, **relative** to the root directory.
This command sets `process.env.NODE_ENV` to `production`. This command sets `process.env.NODE_ENV` to `production`.

View File

@ -1,7 +1,7 @@
# `nuxi dev` # `nuxi dev`
```{bash} ```{bash}
npx nuxi dev [rootDir] [--clipboard] [--open, -o] [--no-clear] [--port, -p] [--host, -h] [--https] [--ssl-cert] [--ssl-key] npx nuxi dev [rootDir] [--dotenv] [--clipboard] [--open, -o] [--no-clear] [--port, -p] [--host, -h] [--https] [--ssl-cert] [--ssl-key]
``` ```
The `dev` command starts a development server with hot module replacement at [http://localhost:3000](https://localhost:3000) The `dev` command starts a development server with hot module replacement at [http://localhost:3000](https://localhost:3000)
@ -9,6 +9,7 @@ The `dev` command starts a development server with hot module replacement at [ht
Option | Default | Description Option | Default | Description
-------------------------|-----------------|------------------ -------------------------|-----------------|------------------
`rootDir` | `.` | The root directory of the application to serve. `rootDir` | `.` | The root directory of the application to serve.
`--dotenv` | `.` | Point to another `.env` file to load, **relative** to the root directory.
`--clipboard` | `false` | Copy URL to clipboard. `--clipboard` | `false` | Copy URL to clipboard.
`--open, -o` | `false` | Open URL in browser. `--open, -o` | `false` | Open URL in browser.
`--no-clear` | `false` | Does not clear the console after startup. `--no-clear` | `false` | Does not clear the console after startup.

View File

@ -1,7 +1,7 @@
# `nuxi preview` # `nuxi preview`
```{bash} ```{bash}
npx nuxi preview [rootDir] npx nuxi preview [rootDir] [--dotenv]
``` ```
The `preview` command starts a server to preview your Nuxt application after running the `build` command. The `preview` command starts a server to preview your Nuxt application after running the `build` command.
@ -9,6 +9,7 @@ The `preview` command starts a server to preview your Nuxt application after run
Option | Default | Description Option | Default | Description
-------------------------|-----------------|------------------ -------------------------|-----------------|------------------
`rootDir` | `.` | The root directory of the application to preview. `rootDir` | `.` | The root directory of the application to preview.
`--dotenv` | `.` | Point to another `.env` file to load, **relative** to the root directory.
This command sets `process.env.NODE_ENV` to `production`. To override, define `NODE_ENV` in a `.env` file or as command-line argument. This command sets `process.env.NODE_ENV` to `production`. To override, define `NODE_ENV` in a `.env` file or as command-line argument.

View File

@ -10,7 +10,7 @@ import { defineNuxtCommand } from './index'
export default defineNuxtCommand({ export default defineNuxtCommand({
meta: { meta: {
name: 'build', name: 'build',
usage: 'npx nuxi build [--prerender] [rootDir]', usage: 'npx nuxi build [--prerender] [--dotenv] [rootDir]',
description: 'Build nuxt for production deployment' description: 'Build nuxt for production deployment'
}, },
async invoke (args) { async invoke (args) {
@ -23,6 +23,10 @@ export default defineNuxtCommand({
const nuxt = await loadNuxt({ const nuxt = await loadNuxt({
rootDir, rootDir,
dotenv: {
cwd: rootDir,
fileName: args.dotenv
},
overrides: { overrides: {
_generate: args.prerender _generate: args.prerender
} }

View File

@ -18,7 +18,7 @@ import { defineNuxtCommand } from './index'
export default defineNuxtCommand({ export default defineNuxtCommand({
meta: { meta: {
name: 'dev', name: 'dev',
usage: 'npx nuxi dev [rootDir] [--clipboard] [--open, -o] [--port, -p] [--host, -h] [--https] [--ssl-cert] [--ssl-key]', usage: 'npx nuxi dev [rootDir] [--dotenv] [--clipboard] [--open, -o] [--port, -p] [--host, -h] [--https] [--ssl-cert] [--ssl-key]',
description: 'Run nuxt development server' description: 'Run nuxt development server'
}, },
async invoke (args) { async invoke (args) {
@ -40,7 +40,7 @@ export default defineNuxtCommand({
const rootDir = resolve(args._[0] || '.') const rootDir = resolve(args._[0] || '.')
showVersions(rootDir) showVersions(rootDir)
await setupDotenv({ cwd: rootDir }) await setupDotenv({ cwd: rootDir, fileName: args.dotenv })
const listener = await listen(serverHandler, { const listener = await listen(serverHandler, {
showURL: false, showURL: false,

View File

@ -10,7 +10,7 @@ import { defineNuxtCommand } from './index'
export default defineNuxtCommand({ export default defineNuxtCommand({
meta: { meta: {
name: 'preview', name: 'preview',
usage: 'npx nuxi preview|start [rootDir]', usage: 'npx nuxi preview|start [--dotenv] [rootDir]',
description: 'Launches nitro server for local testing after `nuxi build`.' description: 'Launches nitro server for local testing after `nuxi build`.'
}, },
async invoke (args) { async invoke (args) {
@ -35,9 +35,10 @@ export default defineNuxtCommand({
process.exit(1) process.exit(1)
} }
if (existsSync(resolve(rootDir, '.env'))) { const envExists = args.dotenv ? existsSync(resolve(rootDir, args.dotenv)) : existsSync(rootDir)
if (envExists) {
consola.info('Loading `.env`. This will not be loaded when running the server in production.') consola.info('Loading `.env`. This will not be loaded when running the server in production.')
await setupDotenv({ cwd: rootDir }) await setupDotenv({ cwd: rootDir, fileName: args.dotenv })
} }
consola.info('Starting preview command:', nitroJSON.commands.preview) consola.info('Starting preview command:', nitroJSON.commands.preview)