webpack 中 loader 和 plugin
                    Contents
                    
                
                
            loader
webpack自身只支持js和json这两种格式的文件,对于其他文件需要通过loader将其转换为commonJS规范的文件后,webpack才能解析到。
它是一个转换器,将A文件进行编译成B文件,比如:将A.less转换为A.css,单纯的文件转换过程。
常用loaders
| 名称 | 描述 | 
|---|---|
| babel-loader | 转换js新特性语法 | 
| stylus-loader | 将stylus文件转换成css | 
| css-loader | 将css文件打包到js中 | 
| style-loader | 将 css 代码以标签的形式插入到 html 中。 | 
| ts-loader | 将ts转换为js | 
| file-loader | 生成文件的文件名就是文件内容的 MD5 哈希值并会保留所引用资源的原始扩展名 | 
| url-loader | 把图片以Base64格式打包到bundle.js文件中 | 
| raw-loader | 将文件以字符串的形式导入 | 
| thread-loader | 多进程打包js和css | 
| image-webpack-loader | 压缩图片大小 | 
| vue-loader | vue文件的一个加载器,跟template/js/style转换成js模块。 | 
编写原则:
- 单一原则: 每个 Loader 只做一件事;
 - 链式调用: Webpack 会按顺序链式调用每个 Loader;
 - 统一原则: 遵循 Webpack 制定的设计规则和结构,输入与输出均为字符串,各个 Loader 完全独立,即插即用;
 
plugin
是用于在webpack打包编译过程里,在对应的事件节点里执行自定义操作,比如资源管理、bundle文件优化等操作。
plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务
| 名称 | 描述 | 
|---|---|
| progress-bar-webpack-plugin | 编译进度条 | 
| compression-webpack-plugin | gzip 压缩 | 
| happypack | 多线程处理 | 
| webpack-merge | 配置合并 | 
| splitChunksPlugin | 代码分隔 | 
| CommonsChunkPlugin | 代码分割 | 
| DefinePlugin | 定义全局变量 | 
参考