minikey / webpack5-cdn-plugin

Upload your webpack-generated assets to CDN, allowing renaming/rehashing.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

webpack5-cdn-plugin

For webpack4, please refer to webpack4-cdn-plugin.

Docs

Install

npm i webpack5-cdn-plugin -D

Usage

const { Webpack5CDNPlugin } = require('webpack5-cdn-plugin')

let cacheData = null;

// webpack config
module.exports = {
  plugins: [
    // ...
    new Webpack5CDNPlugin({
      keepLocalFiles: false,
      manifestFilename: 'manifest.json',
      uploadContent({ file, extname, content }) {
        const hash = md5(content)
        
        if (cacheData.has(hash)) {
          return Promise.resolve(cacheData.get(hash))
        }

        // NOTE 需要自己实现上传文件、重试、并发控制
        return uploadTaskManager
          .upload(content)
          .then(result => {
            cacheData.set(hash, result.url)
            return result.url
          })
      },
      before() {
        cacheData = readCache()
      },
      done() {
        persistCache(cacheData)
      }
    })
  ]
}

About

Upload your webpack-generated assets to CDN, allowing renaming/rehashing.


Languages

Language:TypeScript 100.0%