目录

1.mode

2.devtool

3.entry

4.output


webpack提供的 CLI 支持很多的参数,例如 --mode,但更多时候我们会使用配置文件来控制webpack的行为。默认情况下,webpack会读取webpack.config.js 文件作为配置文件,但也可以通过 CLI 参数 --config 来指定某个配置文件。配置文件中通过CommonJS模块导出一个对象,对象中的各种属性对应不同的webpack配置,例子如下:

module.exports = {//在这里添加配置对象
}

【注】

1)配置文件中的代码,必须是有效的node代码

2)当命令行参数与配置文件中的配置出现冲突时,以命令行参数为准

1.mode

编译模式,字符串,取值为development或production,指定编译结果代码运行的环境,会影响webpack对编译结果代码格式的处理

2.devtool

控制是否生成且如何生成source map(源码地图),具体配置请点击这里

【扩展】源码地图

A)概念:前端发展到现阶段,很多时候不会直接运行源代码,可能需要对源代码进行合并、压缩、转换等操作,真正运行的是转换后的代码。这就给调试带来了困难,因为当运行发生错误的时候,我们更加希望能看到源代码中的错误,而不是转换后代码的错误。为了解决这一问题,chrome浏览器率先支持了source map,其他浏览器纷纷效仿,目前,几乎所有的新版浏览器都支持了source map。source map实际上是一个配置,配置中不仅记录了所有源码内容,还记录了和转换后的代码的对应关系。

B)最佳实践:source map应在开发环境中使用,作为一种调试手段,不应该在生产环境中使用。source map的文件一般较大,不仅会导致额外的网络传输,还容易暴露原始代码。即便要在生产环境中使用source map,用于调试真实的代码运行问题,也要做出一些处理规避网络传输和代码暴露的问题

3.entry

该配置指定文件入口,配置的属性名为chunk名称,其值为指定文件的路径(入口模块)。一个entry对象中可以包含多个chunk,一个chunk也可以包含多个入口模块,代码如下

module.exports = {mode: "production",entry: {main: "./src/index.js", //属性名:chunk的名称, 属性值:入口模块(启动模块)a: ["./src/a.js", "./src/index.js"] //启动模块有两个},devtool: "source-map"
}

4.output

指定编译结果文件,这个配置中包含很多属性,最重要的是 path 和 filename,path 的属性值为打包后文件的路径,一般使用node的内置模块 path 的 path.resolve() 方法来搞定路径问题,如果不清楚,请戳这里。filename决定了我们打包好的文件名称,由于打包过程中,可能生成多个文件,因此这里的命名不能简单的直接指定命名,而是可以采用计算出文件名的方法,有以下几个规则

  • name:chunkname
  • hash:总的资源hash,因为当改变文件内容时,hash值会跟着变化,所以通常用于解决缓存问题,防止因文件内容改变而文件名没有发生变化时,浏览器不重新请求资源的情况。
  • chunkhash:使用chunkhash
  • id:使用chunkid,因为其在生产环境为以0开头的数字,而在开发环境为入口文件的文件名,所以不推荐

举个例子来看看怎么配置该属性叭

var path = require("path")
module.exports = {mode: "development",entry: {main: "./src/index.js", //属性名:chunk的名称, 属性值:入口模块(启动模块)a: ["./src/a.js", "./src/index.js"] //启动模块有两个},output: {path: path.resolve(__dirname, "target"), //必须配置一个绝对路径,表示资源放置的文件夹,默认是distfilename: "[name].[chunkhash:5].js" //配置的合并的js文件的规则,chunkhash:5表示只取chunkhash的前5位},devtool: "source-map"
}

【结果】生成的文件如下图,其中后缀位map的文件是源码地图

还有两个重要的配置,loader和plugin,单独来说

webpack文件配置相关推荐

  1. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

  2. 建立项目的webpack简单配置

    实战项目中的 Webpack 配置: 说明:以下命令通过 Git Bash 执行 1.建立webpack-demo文件夹及npm初始化 Administrator@PC-20170414ZFJO MI ...

  3. webpack简单配置

    webpack有4个重点内容: 入口(entry):指示webpack 应该使用哪个模块,来作为构建其内部依赖图的开始 输出(output):告诉 webpack 在哪里输出它所创建的 bundles ...

  4. webpack代理配置打包后接口404_webpack 从零开始

    什么是webpack? webpack 可以看做是是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖 ...

  5. VUE config/index.js文件配置

     当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) 1 2 3 4 5 6 7 8 9 10 11 ...

  6. 六、Webpack详解学习笔记——webpack的安装、起步、配置、loader的使用、webpack中配置Vue、plugin的使用、搭建本地服务器、webpack配置的分离

    一.认识webpack 什么是webpack? 这个webpack还真不是一两句话可以说清楚的. 我们先看看官方的解释: At its core, webpack is a static module ...

  7. vue-cli+webpack打包配置

    vue-cli+webpack打包配置 一: 目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── ut ...

  8. 三.webpack基本配置

    webpack基本配置 1.关于webpack.config.js 首先我们先建立这样的目录 文件说明: src : 放置源文件的目录 dist : 放置打包后文件的目录 index.html : 初 ...

  9. (超全)Vue.js学习笔记—webpack基础配置(webpack4+babel7+vue2)

    webpack基础配置&&单文件组件与vue-loader 参考<Vue,js>实战(梁灏编著) 笔者近期学习Vue.js进阶篇,参考教程流程完成webpack.vue.b ...

最新文章

  1. 使用java.util.Timer来周期性的执行制定的任务
  2. 今晚8点开播 | 深度解析知识图谱发展关键阶段技术脉络
  3. 2021牛客暑期多校训练营4 Tree Xor (区间异或上一个数+区间求交)
  4. Wireshark命令行工具tshark使用小记
  5. [ZJOI2008]生日聚会Party
  6. CentOS系统代理配置
  7. ucore-lab1-练习5report
  8. Java 面试就业指导,100 % 提高面试成功率
  9. java 性能调优_Java性能调优调查结果(第三部分)
  10. Cannot determine the location of the VS Common Tools folder.
  11. “你的深度学习框架包含15个漏洞”,360说 | 附论文
  12. Windows mobile美化之-短信界面美化修改~
  13. PSCAD学习笔记(一)
  14. opencontrail-vrouter命令
  15. Elasticsearch 解决集群 Yellow 与 Red 的问题
  16. 土星环年龄很轻?卡西尼号探测船坠毁前传送珍贵数据
  17. 目标跟踪OTB评估指标(OP, CLE, FPS)与matlab代码
  18. python数学编程 pdf,Python数学编程
  19. 等额本息还款法贷款利息计算方法及还款计划
  20. MyBatis在Spring中的事务管理

热门文章

  1. PyCairo 中的图片
  2. LevelDB 源码剖析(九)DBImpl模块:Open、Get、Put、Delete、Write
  3. C++ STL : SGI-STL空间配置器源码剖析
  4. QUIC实战(四) 设置应用开机自启动
  5. RabbitMQ管理(4)——应用管理
  6. 设计模式:状态模式(State)
  7. 史上最详细的MySQL操作事例
  8. Python的列表推倒式、生成器及迭代器
  9. 指定父对象和信号与槽
  10. 基于LZ77算法的文件压缩铺垫