@mhy/config
Version:
> This documentation is not complete. It's in progress and it's a BETA version. Use the tool at your own risk.
37 lines (29 loc) • 1.12 kB
JavaScript
const fs = require('fs')
const path = require('path')
const WebpackManifestPlugin = require('webpack-manifest-plugin')
const WebpackPwaManifestPlugin = require('webpack-pwa-manifest')
const { GenerateSW, InjectManifest } = require('workbox-webpack-plugin')
const { moduleHome } = require('../../')
const manifest = require('../../manifest')
const defaultSwPath = path.resolve(moduleHome, '../../../../', 'src/sw.js')
const projectSwPath = path.resolve(process.cwd(), 'src/sw.js')
const swSrc = fs.existsSync(projectSwPath) ? projectSwPath : defaultSwPath
module.exports.default = (plugins = []) => {
manifest.icons.map(icon => {
const inCwdPath = path.resolve(process.cwd(), icon.src)
if (fs.existsSync(inCwdPath)) {
icon.src = inCwdPath
}
return icon
})
plugins = plugins.concat(new GenerateSW())
if (fs.existsSync(swSrc)) {
new InjectManifest({ swSrc })
}
return plugins.concat([
new WebpackPwaManifestPlugin(manifest),
new WebpackManifestPlugin({
fileName: './manifest.webpack.json'
})
])
}