diff --git a/packages/cli/src/utils/generate.js b/packages/cli/src/utils/generate.js
index 51bb32a232..2b97726ce0 100644
--- a/packages/cli/src/utils/generate.js
+++ b/packages/cli/src/utils/generate.js
@@ -89,7 +89,14 @@ export async function ensureBuild (cmd) {
// Quick diff
let needBuild = false
- for (const field of ['nuxtVersion', 'ssr', 'target', 'env', 'process.env']) {
+
+ const fields = ['nuxtVersion', 'ssr', 'target']
+
+ if (nuxt.options.generate.ignoreEnv !== true) {
+ fields.push('env', 'process.env')
+ }
+
+ for (const field of fields) {
if (JSON.stringify(previousBuild[field]) !== JSON.stringify(currentBuild[field])) {
needBuild = true
consola.info(`Doing webpack rebuild because ${field} changed`)
diff --git a/packages/config/src/config/generate.js b/packages/config/src/config/generate.js
index 76ad961f13..87e7e1b621 100644
--- a/packages/config/src/config/generate.js
+++ b/packages/config/src/config/generate.js
@@ -3,6 +3,7 @@ export default () => ({
routes: [],
exclude: [],
concurrency: 500,
+ ignoreEnv: false,
interval: 0,
subFolders: true,
fallback: '200.html',
diff --git a/packages/config/test/__snapshots__/options.test.js.snap b/packages/config/test/__snapshots__/options.test.js.snap
index 44e21c60ef..68d7464d25 100644
--- a/packages/config/test/__snapshots__/options.test.js.snap
+++ b/packages/config/test/__snapshots__/options.test.js.snap
@@ -219,6 +219,7 @@ Object {
"dir": "/var/nuxt/test/dist",
"exclude": Array [],
"fallback": "200.html",
+ "ignoreEnv": false,
"interval": 0,
"manifest": true,
"nojekyll": true,
diff --git a/packages/config/test/config/__snapshots__/index.test.js.snap b/packages/config/test/config/__snapshots__/index.test.js.snap
index 46d9e806c4..2cd9b84bad 100644
--- a/packages/config/test/config/__snapshots__/index.test.js.snap
+++ b/packages/config/test/config/__snapshots__/index.test.js.snap
@@ -194,6 +194,7 @@ Object {
"dir": "dist",
"exclude": Array [],
"fallback": "200.html",
+ "ignoreEnv": false,
"interval": 0,
"manifest": true,
"nojekyll": true,
@@ -583,6 +584,7 @@ Object {
"dir": "dist",
"exclude": Array [],
"fallback": "200.html",
+ "ignoreEnv": false,
"interval": 0,
"manifest": true,
"nojekyll": true,
diff --git a/packages/types/config/generate.d.ts b/packages/types/config/generate.d.ts
index c5e90b5057..e5800f5719 100644
--- a/packages/types/config/generate.d.ts
+++ b/packages/types/config/generate.d.ts
@@ -17,6 +17,7 @@ export interface NuxtOptionsGenerate {
dir?: string
exclude?: RegExp[]
fallback?: string | boolean
+ ignoreEnv?: boolean
interval?: number
nojekyll?: boolean
routes?: NuxtOptionsGenerateRoute[] | NuxtOptionsGenerateRoutesFunction | NuxtOptionsGenerateRoutesFunctionWithCallback
diff --git a/test/fixtures/full-static-with-ignore-env/full-static-with-ignore-env.test.js b/test/fixtures/full-static-with-ignore-env/full-static-with-ignore-env.test.js
new file mode 100644
index 0000000000..247224a959
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/full-static-with-ignore-env.test.js
@@ -0,0 +1,3 @@
+import { buildFixture } from '../../utils/build'
+
+buildFixture('full-static-with-ignore-env')
diff --git a/test/fixtures/full-static-with-ignore-env/layouts/default.vue b/test/fixtures/full-static-with-ignore-env/layouts/default.vue
new file mode 100644
index 0000000000..3a4cef87f6
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/layouts/default.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/nuxt.config.js b/test/fixtures/full-static-with-ignore-env/nuxt.config.js
new file mode 100644
index 0000000000..eb355603fa
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/nuxt.config.js
@@ -0,0 +1,30 @@
+export default {
+ target: 'static',
+ export: {
+ payload: {
+ config: true
+ }
+ },
+ router: {
+ // base: '/test',
+ },
+ generate: {
+ ignoreEnv: true
+ },
+ foo: {
+ shell: process.env.SHELL
+ },
+ env: {
+ x: 123
+ },
+ hooks: {
+ export: {
+ before ({ setPayload }) {
+ setPayload({ shared: true })
+ },
+ route ({ route, setPayload }) {
+ setPayload({ myRoute: route })
+ }
+ }
+ }
+}
diff --git a/test/fixtures/full-static-with-ignore-env/pages/dynamic/_name.vue b/test/fixtures/full-static-with-ignore-env/pages/dynamic/_name.vue
new file mode 100644
index 0000000000..3fa49a55d9
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/dynamic/_name.vue
@@ -0,0 +1,10 @@
+
+
+ Welcome {{ $route.params.name || 'nuxter' }}!
+
+
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/pages/encoding/中文.vue b/test/fixtures/full-static-with-ignore-env/pages/encoding/中文.vue
new file mode 100644
index 0000000000..f75d238f97
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/encoding/中文.vue
@@ -0,0 +1,5 @@
+
+
+
Encoded path
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/pages/index.vue b/test/fixtures/full-static-with-ignore-env/pages/index.vue
new file mode 100644
index 0000000000..90cf992ac2
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/index.vue
@@ -0,0 +1,5 @@
+
+
+
Full Static Playground!
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/pages/pagination/_i.vue b/test/fixtures/full-static-with-ignore-env/pages/pagination/_i.vue
new file mode 100644
index 0000000000..610dbb1e73
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/pagination/_i.vue
@@ -0,0 +1,21 @@
+
+
+
+ Previous
+
+ Page {{ i }}
+
+ Next
+
+
+
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/pages/payload.vue b/test/fixtures/full-static-with-ignore-env/pages/payload.vue
new file mode 100644
index 0000000000..4243a3f509
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/payload.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/pages/store.vue b/test/fixtures/full-static-with-ignore-env/pages/store.vue
new file mode 100644
index 0000000000..fb10b6045d
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/pages/store.vue
@@ -0,0 +1,18 @@
+
+
+
Welcome {{ $store.state.auth.user.name }}!
+
+ You visited this page {{ $store.state.counter }} times.
+
+
+
+
diff --git a/test/fixtures/full-static-with-ignore-env/store/auth.js b/test/fixtures/full-static-with-ignore-env/store/auth.js
new file mode 100644
index 0000000000..3035efcf64
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/store/auth.js
@@ -0,0 +1,17 @@
+export const state = () => ({
+ user: null
+})
+
+export const mutations = {
+ SET_USER (state, user) {
+ state.user = user
+ }
+}
+
+export const actions = {
+ FETCH_USER ({ commit }) {
+ commit('SET_USER', {
+ name: (process.client ? 'C' : 'S') + ' Æ A-' + (10 + Math.round(Math.random() * 10))
+ })
+ }
+}
diff --git a/test/fixtures/full-static-with-ignore-env/store/index.js b/test/fixtures/full-static-with-ignore-env/store/index.js
new file mode 100644
index 0000000000..5b42ad2b45
--- /dev/null
+++ b/test/fixtures/full-static-with-ignore-env/store/index.js
@@ -0,0 +1,9 @@
+export const state = () => ({
+ counter: 0
+})
+
+export const mutations = {
+ COUNT (state) {
+ state.counter += 1
+ }
+}