0
点赞
收藏
分享

微信扫一扫

想开发自己的依赖包或者框架?那么npm link你会用吗?

丹柯yx 2022-04-18 阅读 49

目录

前言

npm link是一个很有价值的东西,它可以通过关联的形式替代不停去更新npm仓库包,调试自己的模块,在我们开发自己的模块或者框架时肯定需要用到,接下来就跟着我来学习一下吧。

创建项目

首先我们先创建一个简单项目peoject1,我喜欢加上"type": "module"使用es6模块。

package.json

{
  "name": "project1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "module"
}

我们创建一个简单模块。

// peoject1/index.js
export const str = 'hello world!'

我们都知道如果我们需要在当前项目中使用该模块需要引入。

// peoject1/test.js
import {str} from './index.js'
console.log(str)

命令行运行

> node test.js
hello world!

那么出现个问题,如果我需要在其他项目引入呢?

我们再创建一个项目peoject2

package.json

{
  "name": "project2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "module"
}

我们尝试引入project1。

// peoject2/test.js
import {str} from 'project1'
console.log(str)

一定会发现报错了,因为peoject1这个包不存在:Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'project1' imported from ...

这时候你肯定想的到我们只要把project1打包到npm仓库再下载到peoject2就好了。

但是我们万一peoject1项目目前开发阶段需要频繁修改呢?我们不能一直靠重复打包来处理吧。

于是我们可以考虑使用npm link。

npm link关联项目

我们回到project1

命令行运行

> npm link

added 1 package in 1s

会提示你添加了一个包,添加在哪里了呢?npm全局包的位置。

npm全局包默认位置:C:\Users\admin\AppData\Roaming\npm\node_modules

在这里插入图片描述
接下来再去project2执行关联。

命令行运行

>npm link project1

added 1 package in 712ms

就会发现这个包被关联进了peoject2node_modules
在这里插入图片描述
这时候我们就可以正确运行project2的测试代码了。

命令行运行

> node test.js
hello world!

而且更棒的是,此时你在project1修改导出的字符串,project2中关联的包会自动更新,不需要重新进行关联就可以进行调试。

举报

相关推荐

0 条评论