day22

95 阅读1分钟

webpack

  • @mode 模式 development production none
  • @entry 入口文件路径
  • @output 出口文件生成的路径
  • @module 配置模块的处理规则
  • @resolve 配置寻找模块的规则
  • @devtool 配置开发工具
  • @context 配置中解析入口的起点和loader
  • @externals 配置外部运行环境提供的模块
  • @devServer 配置开发服务器
  • @plugin 配置插件

在不设置context情况下

  • entry会配置相对根目录的路径

  • entry: './src/main',

  • 在配置context情况下

  • entry: './main',

  • context: path.resolve(__dirname, 'src') 先由context来配置指定的路口 再由entry来配置路径

  • output

  • filename 文件的输出路径

path 必须使用绝对路径

  • publicPath 把输出目录配置为浏览器环境下的URL
  • 假设构建的输出目录
  |----build
    |----js
       |----main.js
    |----images
      |----logo.jpg
    |----css
       |----main.css
    |----index.html

生成环境下的资源会托管到CDN上 但是默认资源都是相对于HTML的文件的地址

如果线上的CDN地址为 www.cdn.xxx.com/assets/ 那么build/js/main.js的URL地址应该就是 www.cdn.xxx.com/assets/js/m… 这时候就需要publicPath来配置前缀 www.cdn.xxx.com/assets/

  • module

  • noParse

  • rules 通过test include exclude 匹配文件

  •   对匹配成功的文件执行loader 也可以传递数组loader执行由后向前
    
  • resolve alias别名 $结尾严苛匹配

  • extensions 支持的拓展名

  • mainField 导入模块中配置,觉得导入具体哪一个

  • modules 决定去哪里寻找第三方模块

  • modules: [path.resolve(__dirname, 'lib'), 'node_modules']

  • externals 告知webpack哪些是由外部引入的 使得webpack打包时不会打包它们

  • 例如jquery

  • devServer

  • 配置服务

  • plugin

  • 拓展插件

  • 通过钩子函数 接受一个数组