背景
webpack 打包完成之后,资源有可能不保存在本地,有可能会放到了 CDN 上,这时如何配置?
图片字体等文件
图片、字体等基于 file-loader 或 url-loader 的文件的 cdn 配置,需要填写 publicPath 参数,如下:
/** ./webpack.config.js **/module.exports = {//...module: {rules: [{loader: 'url-loader',options: {limit: 10240,publicPath:'https://www.baidu.com/img',outputPath: 'img'}}]}//...}
这边注意的是 publicPath 和 outputPath 没有直接的关系。
打包过后,结果如下:

发现路径前加了 cdn 前缀,这就成功了。
javascript 文件
对于 cdn 的 js 文件,只要在 output 参数中,设置 publicPath 即可,如下:
/** ./webpack.config.js **/let path = require('path');//...module.exports = {//...output: {publicPath: 'https://www.baidu.com/js'filename:'[name].[contenthash:8].js',path: path.resolve(__dirname, 'dist')}//...}//...
css 文件
对于 cdn 中的 css 文件也是在 loader 中配置,如下:
/** ./webpack.config.js **/let MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = {module:{rules:[{test: /\.css$/,use:[{loader: MiniCssExtractPlugin.loader,options: {publicPath: 'http://www.baidu.con/css'}}]}]},plugins: [new MiniCssExtractPlugin({filename: 'css/main.css'})]}
打包结果如下:
这时我们发现 css 也是访问 cdn 路径了。
其他文件
其他大多数 loader 都是类似的,都可以这么配置,具体看一下 loader 的说明文档就行。
