模块调试技巧npm link软链

新开发或者修改npm模块的时候,我们怎么在项目中调试呢?

我们假设项目是 my-project, 需要用到一个独立的 my-module 模块

方式一

直接用相对路径安装,会在项目的node_modules中创建一个指向实际my-module目录的软链,也就是说之后我们可以随时修改my-module源码并且不需要重复安装了。
在项目目录下新建模块目录

1
2
mkdir my-module & cd my-module
npm init

返回项目目录

1
cd ..

通过相对路径来安装my-module

1
npm install ./my-module

方式二

使用软链npm link

npm本身给我们提供了一个指令 npm-link

首先新建模块目录my-module,并把它link到全局

1
2
3
4
cd path/to
mkdir my-module & cd my-module
npm init
touch index.js

导出变量或函数

1
2
3
module.exports = {
a: '123'
}

执行,把它link到全局

1
npm link

mac下可以去全局模块包目录查看,是否link成功

1
open /usr/local/lib/node_modules/

再进入到项目目录通过包名来link
注意这里的项目名称要根据模块目录下package.json里的name来写

1
2
cd path/to/my-project
npm link my-module

软链成功之后,就可以在项目中引入模块

1
require('my-module')

方式三

ResolveLoader

默认情况下webpack只会去 node_modules 目录下寻找loader,为了让 Webpack 加载放在本地项目中的 Loader 需要修改 resolveLoader.modules

假如本地的 Loader 在项目目录中的 ./loaders/loader-name 中,则需要如下配置:

1
2
3
4
5
6
module.exports = {
resolveLoader:{
// 去哪些目录下寻找 Loader,有先后顺序之分
modules: ['node_modules','./loaders/'],
}
}

加上以上配置后, Webpack 会先去 node_modules 项目下寻找 Loader,如果找不到,会再去 ./loaders/ 目录下寻找。

参考资料

你所不知道的模块调试技巧 - npm link
官方文档


模块调试技巧npm link软链
https://thaneyang.github.io/2019/07/模块调试技巧npm-link软链.html
作者
ThaneYang
发布于
2019年7月5日
许可协议