1. webpack是把项目当成一个整体,通过一个给定的主文件,webpack将从这个文件开始找到项目的所有依赖,使用loaders处理它们,最后打包成一个或多个浏览器可以识别的js文件。
2. Webpack 是我们需要的模块打包机,webpack-dev-server 用来创建本地服务器,监听代码修改,并自动刷新修改后的结果。
3. Entry:用来写入口文件,它是整个依赖关系的根
4. Output:即使入口文件有多个,但是只有一个输出配置
5. Loader的作用是实现不同格式文件的处理,比如说将 scss 转换为 css,或者 ts 转化为 js,loader需要在webpack.config.js 里边单独用 module 进行配置。(vue => vue-loader、 js => babel-loader、 图片=> url-loader)
6. Plugins 并不是直接操作单个文件,它直接对整个构建过程起作用。
ExtractTextWebpackPlugin:他它会将入口中应用的 CSS 文件,都打包到独立的 CSS 文件中,而不是内嵌在 JS 打包文件中。
HtmlWebpackPlugin:依据一个简单的 index.html 模板,生成一个自动引用你打包后的JS文件的新 index.html
HotModuleReplacementPlugin:它允许你在修改组件代码时,自动刷新实时预览修改后的结果。但注意不要在生产环境中使用 HMR。
7. Loader和Plugin的区别
Loader直译为“加载器”。Webpack 将一切文件视为模块,但是webpack原生是只能解析 js 文件,如果想将其他文件也打包上,就要用到 loader。所以Loader的作用是让 webpack拥有了加载和解析非 JS 文件的能力。
Plugin直译为“插件”。Plugin可以扩展webpack的功能,让webpack具有灵活性。在webpack 运行的生命周期会广播出许多时间,plugin 可以监听这些事件,在合适的时机通过webpack 提供的 API 改变输出结果。
Loader 在 module.rules 中配置,也就是说他作为模板的解析规则存在。类型为数组,每一项都是一个 object,里面描述了对于什么类型的文件(test),使用什么加载(Loader),使用什么的参数(options)
Plugin在plugin中单独配置。类型为数组,每一项都是一个 plugin 的实例,参数都通过构造函数传入