diff --git a/packages/cli/src/utils/generate.js b/packages/cli/src/utils/generate.js index 51bb32a232fa..2b97726ce05d 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 76ad961f135d..87e7e1b621fd 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 44e21c60ef3f..68d7464d25f1 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 46d9e806c4a5..2cd9b84bad40 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 c5e90b5057e9..e5800f5719da 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 000000000000..247224a959a6 --- /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 000000000000..3a4cef87f6a2 --- /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 000000000000..eb355603fada --- /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 000000000000..3fa49a55d970 --- /dev/null +++ b/test/fixtures/full-static-with-ignore-env/pages/dynamic/_name.vue @@ -0,0 +1,10 @@ + + + diff --git "a/test/fixtures/full-static-with-ignore-env/pages/encoding/\344\270\255\346\226\207.vue" "b/test/fixtures/full-static-with-ignore-env/pages/encoding/\344\270\255\346\226\207.vue" new file mode 100644 index 000000000000..f75d238f97ab --- /dev/null +++ "b/test/fixtures/full-static-with-ignore-env/pages/encoding/\344\270\255\346\226\207.vue" @@ -0,0 +1,5 @@ + 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 000000000000..90cf992ac262 --- /dev/null +++ b/test/fixtures/full-static-with-ignore-env/pages/index.vue @@ -0,0 +1,5 @@ + 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 000000000000..610dbb1e735d --- /dev/null +++ b/test/fixtures/full-static-with-ignore-env/pages/pagination/_i.vue @@ -0,0 +1,21 @@ + + + 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 000000000000..4243a3f509a6 --- /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 000000000000..fb10b6045d85 --- /dev/null +++ b/test/fixtures/full-static-with-ignore-env/pages/store.vue @@ -0,0 +1,18 @@ + + + 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 000000000000..3035efcf64a9 --- /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 000000000000..5b42ad2b452c --- /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 + } +}