Files
vue-cli/packages/@vue/cli-plugin-pwa/index.js
2018-01-10 16:20:29 -05:00

33 lines
1.1 KiB
JavaScript

module.exports = (api, options) => {
api.chainWebpack(webpackConfig => {
const name = api.service.pkg.name
// the pwa plugin hooks on to html-webpack-plugin
// and injects icons, manifest links & other PWA related tags into <head>
webpackConfig
.plugin('pwa')
.use(require('./lib/HtmlPwaPlugin'), [Object.assign({
name
}, options.pwa)])
// generate /service-worker.js in production mode
if (process.env.NODE_ENV === 'production') {
webpackConfig
.plugin('sw-precache')
.use(require('sw-precache-webpack-plugin'), [{
cacheId: name,
filename: 'service-worker.js',
staticFileGlobs: [`${options.outputDir}/**/*.{js,html,css}`],
minify: true,
stripPrefix: `${options.outputDir}/`
}])
}
})
// install dev server middleware for resetting service worker during dev
const createNoopServiceWorkerMiddleware = require('./lib/noopServiceWorkerMiddleware')
api.configureDevServer(app => {
app.use(createNoopServiceWorkerMiddleware())
})
}