diff --git a/packages/@vue/cli-plugin-pwa/generator/template/src/registerServiceWorker.js b/packages/@vue/cli-plugin-pwa/generator/template/src/registerServiceWorker.js index 76cede074d..529f04e9a7 100644 --- a/packages/@vue/cli-plugin-pwa/generator/template/src/registerServiceWorker.js +++ b/packages/@vue/cli-plugin-pwa/generator/template/src/registerServiceWorker.js @@ -2,7 +2,7 @@ import { register } from 'register-service-worker' -if (process.env.NODE_ENV === 'production') { +if (process.env.NODE_ENV === 'production' || process.env.VUE_APP_ALLOW_LOCAL_SW === 'true') { register(`${process.env.BASE_URL}service-worker.js`, { ready () { console.log( diff --git a/packages/@vue/cli-plugin-pwa/index.js b/packages/@vue/cli-plugin-pwa/index.js index 91b52f68e2..6dff4348d1 100644 --- a/packages/@vue/cli-plugin-pwa/index.js +++ b/packages/@vue/cli-plugin-pwa/index.js @@ -18,7 +18,8 @@ module.exports = (api, options) => { .after('html') // generate /service-worker.js in production mode - if (process.env.NODE_ENV === 'production') { + // or when local service worker development is allowed + if (process.env.NODE_ENV === 'production' || process.env.VUE_APP_ALLOW_LOCAL_SW === 'true') { // Default to GenerateSW mode, though InjectManifest also might be used. const workboxPluginMode = userOptions.workboxPluginMode || 'GenerateSW' const workboxWebpackModule = require('workbox-webpack-plugin') @@ -52,8 +53,11 @@ module.exports = (api, options) => { }) // install dev server middleware for resetting service worker during dev - const createNoopServiceWorkerMiddleware = require('./lib/noopServiceWorkerMiddleware') - api.configureDevServer(app => { - app.use(createNoopServiceWorkerMiddleware()) - }) + // when local service worker development is not allowed (default) + if(process.env.VUE_APP_ALLOW_LOCAL_SW !== 'true') { + const createNoopServiceWorkerMiddleware = require('./lib/noopServiceWorkerMiddleware') + api.configureDevServer(app => { + app.use(createNoopServiceWorkerMiddleware()) + }) + } }