Webpack中文文档:
输出(output) | webpack 中文文档

首先我们来看一下Webpack的基本配置:

  1. module.exports = {
  2. // ...
  3. // entry 可以简写为:
  4. // entry: "./src/index.js"
  5. entry: {
  6. "main": "./src/index.js"
  7. },
  8. output: {
  9. // 如果没有配置 filename,output 就会找 entry 对象下的 key 值作为文件名
  10. // 也就是 main
  11. filename: 'main.js',
  12. path: path.resolve(__dirname, "dist")
  13. },
  14. // ...
  15. }

打包多文件配置

假设我们在entry配置了多个入口,output却只有一个输出,这个时候编译就会报错:

  1. module.exports = {
  2. // ...
  3. entry: {
  4. main: "./src/index.js",
  5. sub: "./src/index.js"
  6. },
  7. output: {
  8. filename: 'main.js',
  9. path: path.resolve(__dirname, "dist")
  10. },
  11. // ...
  12. }

这个时候我们就需要配置output为多出口:

  1. module.exports = {
  2. entry: {
  3. main: "./src/index.js",
  4. sub: "./src/index.js"
  5. },
  6. output: {
  7. // 使用占位字符,name 指的是 entry 对象入口文件的文件名
  8. filename: '[name].js',
  9. path: path.resolve(__dirname, "dist")
  10. }
  11. }

将资源文件放到 CDN

假设我们想把资源文件放到cdn的时,index.html就要去引入该如何配置呢?

  1. module.exports = {
  2. // ...
  3. output: {
  4. filename: '[name].js',
  5. path: path.resolve(__dirname, "dist"),
  6. // http://cdn.com/是虚拟的地址
  7. publicPath: "http://cdn.com/"Ï
  8. },
  9. }
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app"></div>
  10. <!-- 引入 CDN 地址 -->
  11. <script src="http://cdn.com/main.js"></script>
  12. </body>
  13. </html>

更多webpack.output的配置:
Output | webpack 中文文档

清理 dist 文件夹

目前我们每次打包的时候都需要手动删除dist产出的文件,那么如果让Webpack每次打包的时候自动删除这个文件夹呢?

有以下两种办法:
1、使用cleanwebpackplugin
GitHub - johnagan/clean-webpack-plugin: A webpack plugin to remove your build folder(s) before building
2、配置 output
管理输出 | webpack 中文文档

  1. module.exports = {
  2. // ...
  3. output: {
  4. filename: "bundle.js",
  5. path: path.resolve(__dirname, "dist"),
  6. // 清除
  7. clean: true
  8. },
  9. // ...
  10. }