Entry

Entry用来指定webpack打包的入口
Entry有两种情况,一种是单入口文件,一种是多入口文件。

  1. //单入口 字符串
  2. module.exports={
  3. entry:'/path/xxxx.js',
  4. }
  5. //多入口 对象
  6. module.exports={
  7. entry:{
  8. app:'./path/app.js',
  9. mobile:'./path/mobile.js'
  10. }
  11. }

Output

output用于设置打包输出到磁盘中的信息。针对单入口和多入口文件,output有不同的设置

  1. const path = require('path')
  2. //针对单入口的output设置,为一个对象。包含filename和path,分别指定输出文件的名称和路径
  3. module.exports={
  4. entry:'/path/xxxx.js',
  5. output:{
  6. filename:'xxx.js',
  7. path:_dirname+'/dist'
  8. }
  9. //_dirname 是相对路径 由require(path)获取到的
  10. }
  11. //针对多入口 output 不指定多个出口,通过占位符[name]保证输出不同的文件。和入口文件名相同
  12. module.exports={
  13. entry:{
  14. app:'./path/app.js',
  15. mobile:'./path/mobile.js'
  16. },
  17. output:{
  18. filename:'[name].js',
  19. path:_dirname+'/dist'
  20. }
  21. //_dirname 是相对路径 由require(path)获取到的
  22. }

Loaders

Webpack开箱可用的情况下,只支持json和js两种格式。但是实际项目中,需要处理不同的资源文件,比如png jpg 等图片类型,还有jsx scss less 等js和css框架格式。通过Loaders来实现对其他文件类型的支持。
Loaders本身是一个函数,接收源代码作为参数,返回目标的结果。
常用的Loaders,比如

  • Babel-Loader:转化ES6/7代码到ES5
  • Css-Loader:支持css文件的加载和解析
  • Less-Loader:支持.less文件并且转化为css
  • Ts-Loader:支持转化.ts代码为js代码
  • File-Loader:进行图片、字体等的打包
  • Raw-Loader:将文件以字符串的形式导入
  • Thread-Loader:多线程打包js css等文件

    1. //Loaders的用法和格式
    2. module.exports={
    3. entry:'/path/xxxx.js',
    4. output:{
    5. filename:'xxx.js',
    6. path:_dirname+'/dist'
    7. },
    8. //module模块用来指定loaders。module有一个属性rules数组来在此处标志所有的loader
    9. //每一个匹配对象中 用test表示文件格式 用use 指定解析该文件格式的loader
    10. module:{
    11. rules:[
    12. {test:'/ \.txt$ /',use:'raw-loader'},
    13. ....
    14. ]
    15. }
    16. }

    Plugins

    Plugins主要是用来文件的优化、资源的管理和环境变量注入。
    常见的Plugins:

  • CommonChunksPlugin:将chunks相同的目录提取到相同的js。比如多页面引用一个js文件,则把这个文件公共化

  • CleanWebpackPlugin:清理构建目录
  • ExtractTextWebpackPlugin:将css从bundle提出来构建单独css文件
  • HtmlWebpackPlugin:创建html文件去承载输出的bundle
  • UglifyjsWebpackPlugin:压缩js文件
  • ZipWebpackPlugin:将打出的包生成一个zip包

    Mode

    用来指定Webpack当前打包的环境,比如production、development还是none。设置mode可以使用webpack内置的函数,默认值是production