npm包本地调试的n种快捷的方法

1,720 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

前言

在探索npm link原理的时候,发现npm link主要有两个用途

  • 创建全局命令
  • 本地包调试

那今天我们就主要讲讲本地包调试的n种方法,来对npm link加深理解

npm link

link的英文意思是链接,所以npm link的意思就是创建软连接的意思,类似于windows的创建快捷方式

在一个包下执行npm link,有两个作用:

  • 1、如果这个包的package.jsonbin这个字段,那么会把这个包注册为一个全局命令去使用,同时也会把这个包安装到全局node_modules下面。

我们先试一下这种情况

"bin": {
   "ce": "./lib/index.js"
},

在package.json中添加如上代码块

在命令行执行npm link进行添加package

然后我们在命令行输入npm root -g来看一下全局node_modules路径

/usr/local/lib/node_modules

发现里面的确有我们的包,包名称和package.jsonname一样

接下来访问一下全局命令

open /usr/local/bin

发现里面也有我们的ce命令, good

  • 2、如果这个包的package.json里面没有这个bin字段,那么会把这个包全局安装下node的node_modules下面,使其成为一个全局的包

首先我们先删除我们在全局的命令

npm unlink link -g// link是package名,因为我们是在全局建立的软连接,所以需要加上-g

然后我们在package.json中删除bin属性

此时我们

npm link

此时我们查看全局的node_modules就又能看到我们的包了

image.png

此时如果想使用这个link这个npm

只需要在需要使用的项目根目录下

npm link ${package name}

image.png

查看软连接是否成功,只需要在node_modules包下面看对应的npm包是否有个箭头,有就证明成功了

此时你修改npm包,那么项目中的npm就会变化,good

修改dependencies

只有成为一个全局包,在项目中引用这个包时,可以使用npm link ${package name}来安装这个全局包,如果没有成为全局的包,项目中包使用npm link ${package name}是无法安装这个包的

不过可以使用npm install来安装这个包(假如没有使用npm link使其成为全局包),写法必须是用${package name}:'file: ${实际包地址}',而不是用版本号,版本号的话就从npm上安装了

我们来亲自试一下

首先把全局软连接unlink

npm unlink link -g

然后在package.json中加上如下依赖

 "dependencies": {
    "link": "/Users/wson/Desktop/link"
  }

执行npm install命令 此时我们在link包中添加根目录中添加index.js文件

内容如下

module.exports = {
  aaa: 2222
}

然后我们在项目link1中引入link包,并输出aaa

const link = require('link');
console.log(link.aaa);

image.png

good

有的同学可能会问了,为什么引入link包,会输出link包中根目录index文件的内容

image.png

因为main属性指向了根目录的index文件

参考