Skip to content

Commit

Permalink
fix(cli): rebuild if process.env changes in nuxt.config (#8200)
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Oct 14, 2020
1 parent 5842a64 commit d9f4822
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
23 changes: 19 additions & 4 deletions packages/cli/src/utils/generate.js
Expand Up @@ -59,13 +59,27 @@ export async function ensureBuild (cmd) {

const currentBuildSnapshot = await snapshot(snapshotOptions)

// Detect process.env usage in nuxt.config
const processEnv = {}
if (nuxt.options._nuxtConfigFile) {
const configSrc = await fs.readFile(nuxt.options._nuxtConfigFile)
const envRegex = /process.env.(\w+)/g
let match
// eslint-disable-next-line no-cond-assign
while (match = envRegex.exec(configSrc)) {
processEnv[match[1]] = process.env[match[1]]
}
}

// Current build meta
const currentBuild = {
// @ts-ignore
nuxtVersion: nuxt.constructor.version,
ssr: nuxt.options.ssr,
target: nuxt.options.target,
snapshot: currentBuildSnapshot
snapshot: currentBuildSnapshot,
env: nuxt.options.env,
'process.env': processEnv
}

// Check if build can be skipped
Expand All @@ -74,9 +88,10 @@ export async function ensureBuild (cmd) {
const previousBuild = destr(fs.readFileSync(nuxtBuildFile, 'utf-8')) || {}

// Quick diff
const needBuild = false
for (const field of ['nuxtVersion', 'ssr', 'target']) {
if (previousBuild[field] !== currentBuild[field]) {
let needBuild = false
for (const field of ['nuxtVersion', 'ssr', 'target', 'env', 'process.env']) {
if (JSON.stringify(previousBuild[field]) !== JSON.stringify(currentBuild[field])) {
needBuild = true
consola.info(`Doing webpack rebuild because ${field} changed`)
break
}
Expand Down
6 changes: 6 additions & 0 deletions test/fixtures/full-static/nuxt.config.js
Expand Up @@ -11,6 +11,12 @@ export default {
build: {
publicPath: '/test/_nuxt/'
},
foo: {
shell: process.env.SHELL
},
env: {
x: 123
},
hooks: {
export: {
before ({ setPayload }) {
Expand Down

0 comments on commit d9f4822

Please sign in to comment.