启动

运行命令后,npm会让命令行工具进入,node_module下的bin目录去找是否存在webpack.sh/webpack.cmd,存在就执行,不存在就抛出错误

运行目录:node_modules/webpack/bin/webpack.js

loader

loader是一个导出为函数的javaScrpt模块

多个loader串行执行,从右往左

  1. module: {
  2. rules: [
  3. {
  4. test: /\.less$/,
  5. use: [
  6. 'style-loader',
  7. 'css-loader',
  8. 'less-loader'
  9. ]
  10. }
  11. ]
  12. }

开发调试:loader-runner

plugin

基本结构

  1. class Myplugin(){
  2. apply(compiler) { ------- 插件需要实现apply方法
  3. compiler.hooks.done.tap('', (
  4. stats ------- 插件的hooks实现(compilerhookscompilerationhooks
  5. ) => {
  6. })
  7. }
  8. }
  9. module.export = Myplugin;

loader和plugin的区别

loader更多是处理各种静态资源,
插件是伴随整个webpack 过程的,loader没法做的,插件都能做。
插件没有独立的开发环境,loader有loader-runner