0x01 webpack源码分析之webpack启动程序

4 篇文章 0 订阅
4 篇文章 0 订阅

序言(吹水)

之前一直想跟踪一下webpack的源码,奈何沉迷游戏,无法自拔。等我回过头,webpack已经更新到4.0啦,这更新速度比英雄联盟还快,瞬间就s4了。从今天开始对webpack(4.0)的源码进行探索,但随时可能断更,咳咳。这一章呢,主要记录一下webpack的启动,以及调试源码的方法。

测试代码

目录结构
webpack-demo
  |- package.json
  |- index.html
  |- src
  	|- index.js
  |- dist
    |- index.html
  |-node-modules
    ............
package.json
{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "demo",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config webpack.config.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.23.1",
    "webpack-cli": "^3.1.2"
  },
  "dependencies": {
    "lodash": "^4.17.11"
  }
}

index.js
import _ from 'lodash';
function component() {
  var element = document.createElement('div');

  element.innerHTML = _.join(['Hello', 'webpack'], ' ');

  return element;
}

document.body.appendChild(component());
webpack.config.json
const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};
index.html
<!doctype html>
<html>
  <head>
    <title>起步</title>
    <script src="https://unpkg.com/lodash@4.16.6"></script>
  </head>
  <body>
    <script src="bundle.js"></script>
  </body>
</html>

启动webpack

启动的命令非常的简单,打开控制台,用cd命令到webpack-demo目录下,然后

npm run build

我这里是用npm scripts来启动webpack,详见package.json中的scripts.build的内容。他相当于下面的命令

webpack --config webpack.config.js

同时呢npm会把./node_modules/.bin加入到PATH环境变量中(PATH这个环境变量你懂吧),所以又相当于下面的命令

./node_modules/.bin/webpack --config webpack.config.js

安装webpack时,会往./node_modules/.bin下添加几个文件,自己可以打开看看,如果想知道npm scripts的所有环境变量的话,可以用下面命令查看

npm run env

./node_modules/.bin/webpack这个文件只是一个快捷方式(符合链接),它其实就是./node_modules/webpack/bin/webpack.js,这个js文件的开头有这样一个注释,说明这个文件要用node来执行

#!/usr/bin/env node

所以最终得出的启动命令如下:

node ./node_modules/.bin/webpack --config webpack.config.js

对webpack进行跟踪调试

上一节已经分析出webpack的启动命令,调试的话就很简单了,就是nodejs的调试方法。我这里是用node的 --inspect命令参数来启动调试,然后用chrome的devtool调试器连接到调试端口进行调试。
在控制台下执行

node --inspect-brk ./node_modules/.bin/webpack --config webpack.config.js

-brk可以让代码在第一行断住,等待我们的调试器接入。命令执行后,控制台打印出如下信息

Debugger listening on ws://127.0.0.1:9229/d86999be-8be6-47e4-b541-ee0ea159de9a
For help, see: https://nodejs.org/en/docs/inspector

端口号是默认的9229,然后我们启动调试器,打开chrome,点击下图的小图标
chrome
然后就会打开devtool,并且自动连上默认的调试端口
在这里插入图片描述
然后可以把node_modules/webpack文件夹加入到devtool中
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
后面就可以愉快的调试啦,另外node的调试这块可以使用node-inspector,比上述方法还要简单一些,百度上都有,我这里就不多说了。
本章节主要涉及到的东西:npm scripts和node调试。下面附上一些资料(英语大家都懂得吧)
npm scripts:
[1] https://docs.npmjs.com/cli/run-script
[2] https://docs.npmjs.com/misc/scripts
node调试:
[3] https://nodejs.org/docs/latest-v9.x/api/debugger.html#debugger_v8_inspector_integration_for_node_js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值