-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
36 lines (29 loc) · 1.04 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'use strict'
const fs = require('fs')
const { resolve } = require('path')
const template = require('lodash.template')
const { getSource, getAssetsList, assetsAdapter, createVersionHash } = require('./utils')
class WebpackWeatherSWPlugin {
constructor(options) {
this.options = Object.assign({}, {
defaultAssets: ['/'],
}, options)
}
apply(compiler) {
compiler.plugin('emit', (compilation, callback) => {
fs.readFile(resolve(__dirname, 'runtime-template.js'), 'utf-8', (error, content) => {
const { defaultAssets, patternsAssets, name } = this.options
const assetsList = getAssetsList(defaultAssets, compilation.assets, patternsAssets)
const assets = assetsAdapter(assetsList)
const version = createVersionHash(assetsList)
const templateCompiler = template(content)
const compiledTemplate = templateCompiler({ version, assets })
compilation.assets[name] = getSource(compiledTemplate)
callback()
})
})
}
}
module.exports = {
WebpackWeatherSWPlugin,
}