npm发包保姆级教程(包含发包调试等干货)

npm发包保姆级教程(包含发包调试等干货)

前言:

很早之前,笔者看到那么一段话,奉为经典。

一个功能用到了好多次,为什么不封装成组件?一个组件用到了好几个项目,为什么不单独写个npm包?差不多的项目创建了好几个,为什么不封装成脚手架?

是的,今天就让我们来看看npm发包这一套流程是咋操作的~

npm发包:

第一步(注册账号):

首先我们需要注册一个npm账号,等我们包开发好后就会把包发布到这个账号上去。

官网地址: www.npmjs.com/

注册地址:https://www.npmjs.com/signup

第二步(切换npm源):

我们在正常开发的时候,很多时候为了能快速安装依赖会把npm源切换到淘宝源,但是我们在发包的时候,需要把淘宝源切换回npm源

npm config set registry https://registry.npmjs.org/

但是我们再切换回淘宝源,又要执行一长串命令,这样反复,着实有点麻烦

所以我们推荐安装nrm来切换npm的源

//全局安装nrm

npm i nrm -g

//npm源列表

nrm ls

//切换npm源

nrm use npm

//切换淘宝源

nrm use taobao

我们切换回npm源之后,需要查看一下,切换成功没有

npm config get registry

如果显示https://registry.npmjs.org/说明切换npm源成功

第三步(发包流程):

下面我们以下面写的一个加减乘除的函数为例进行发包演示

1.npm包初始化

npm init

根据提示输入你要发的包的名字,在这里笔者用npm-test-linglinglin当做发布的包的名字,然后一直回车,出现Is this OK?的时候, 输入yes回车。最后会生成一个package.json,如下:

在这里,笔者对package.json里的配置进行一个简单的介绍,避免刚开始懵懵的:

{

"name": "npm-test-linglinglin", // 包名,包名不允许重复,npm i XXX 下载就是按这个包名下载的

"version": "1.0.0", // 版本号 --默认是1.0.0,当然版本号可以随意更改

"author": "零凌林", // 作者名称

"description": "", // 描述信息--可以不写

"keywords": ["utils", "format", "money", "phone"], // 关键词,提升SEO --可以不写

// 代码托管的位置 --可选,建议必选,除非不打算维护

"repository": {

"type": "git",

"url": "https://github.com/xxxx/xxxx.git" //代码托管地址

},

"license": "ISC", // 许可证

"homepage": "", // 这个包的介绍网站首页 --可以没有

"bugs": "", // 使用者bug反馈地址 ---可以没有

"main": "index.js", // 入口文件 默认是index.js 可修改 必填

"scripts": {

// 存放可执行脚本

"test": "echo \"Error: no test specified\" && exit 1"

},

"dependencies": {

// 运行依赖

},

"devDependencies": {

// 开发依赖

}

}

下面呢,我们先对npm-test-linglinglin的package.json进行一点简单的调整

2.登录npm

npm login

根据提示输入用户名,密码,邮箱地址和邮箱验证码(注意密码是不显示的,盲打然后回车),如下:

查看登录情况,如果出现用户名就说明登录成功了

npm whoami

3.查询包是否可发

查看是否可以发包(因为发布的包名必须是唯一的,所以得查看有没有同样的包名),如果包名重复,会发布失败,需要更换成唯一的包名

如果查不到该包名,报错,就说明没有这个包名,代表可以发布

npm view 包名

4.更改版本号

我们可以手动更改版本号,也可以通过命令更改版本号,下面是一些更改版本号的命令

npm version xxx // 自动更改版本号,并且commit

npm version patch // 控制台会返回下一个小版本号 如v1.0.1

npm version minor // minor:次版本号,增加新功能,如 v1.0.0->v1.1.0

npm version major // major:主版本号,不兼容的修改,如 v1.0.0->v2.0.0

5.发布

npm publish

显示如下信息,代表发布成功

6.登录npm包查看

npm官网地址

登录npm后,我们可以在packages里看到刚才已经发布成功的包

点进去就能看到包的详细情况,以及源码

至此,我们发包的流程就结束了~

第四步:项目应用测试

1.安装包

npm i npm-test-linglinglin -S

2.使用包

vue页面:

页面效果:

至此,我们就可以确认我们的包彻底发布成功啦~

发包前测试

1.必要性

我们发包测试是很有必要的,如果我们发布的包使用的人很多,你发上去要是报错了,那造成的损失将是巨大的。所以我们一定要确定发布上去的包没有问题。因此我们要做的是,在发布前进行测试,而不是发布上去后再进行测试。

2.npm link

那么我们怎么样在发布包之前进行测试呢?

让我们接着看下去吧~

我们测试包需要借助一个命令

npm link

是的,就是npm link,事实上,我们借助npm link就能把所要发布的包生成一个类似于全局的软链接,方便我们进行调试。

还是以npm-test-linglinglin这个包为例,我们现在在这个包里添加一个数组反转函数,但是不发布上去

我们一般使用npm 下载全局依赖的时候,依赖会被默认安装到_C:\Users\你的用户名\AppData\Roaming\npm_ 这个位置的node_modules中

从上面动图可以看出,我们在 npm-test-linglinglin的包路径下执行npm link会在全局生成一个类似于快捷方式的软链接

ps:如果我们需要取消全局的软链接,只需要执行npm unlink 包名 -g就可以了,例如:

npm unlink npm-test-linglinglin -g

生成全局的软链接后,我们就可以使用全局的这个软链包进行测试了

3.项目使用

在项目里,我们可以先把对应的包移除掉(避免缓存,npm link新代码不生效),例如:

npm uninstall npm-test-linglinglin

然后在项目里执行链接全局包的命令npm link 包名,例如:

npm link npm-test-linglinglin

vue页面:

页面效果:

从上面的结果来看,我们并没有安装 npm-test-linglinglin这个新包,只是用了全局的软链接,经过测试,我们新加的代码无误,这个时候我们就可以按照上述的发包流程进行发包啦。发包成功后,删除这个包的全局软链,重新安装这个包的依赖。

还记得怎么删除全局软链吗?

npm unlink npm-test-linglinglin -g

4.npm link原理

依赖文件系统会在当前项目下的node_modules文件夹下寻找。比如咱们项目依赖了一个antd。那么这个antd的依赖。会优先从当前目录下的node_modules下寻找,如果没有找到,则往父级目录寻找node_modules。一直到根目录为止。

npm发包常用命令

npm login //登录

npm publish //发布

npm unpublish 包名 //撤销已发布的包

npm unpublish 包名 --force //强制撤销

npm unpublish 包名@1.0.2 //可以撤销发布自己发布过的某个版本代码

npm view 包名 //查看包名是否存在

nrm use npm //切换npm镜像

npm adduser //根据提示输入用户名密码邮箱

npm whoami //查看是否登陆成功,如果出现用户名就证明登陆成功了

npm version xxx // 自动更改版本号,并且commit

npm version patch // 控制台会返回下一个小版本号 如v1.0.1

npm version minor // minor:次版本号,增加新功能,如 v1.0.0->v1.1.0

npm version major // major:主版本号,不兼容的修改,如 v1.0.0->v2.0.0

相关推荐

利勃海尔9800挖掘机型号
365bet线路检测中心

利勃海尔9800挖掘机型号

📅 08-14 👁️ 8748
ps正版多少钱永久?
365bet体育投注导航

ps正版多少钱永久?

📅 08-04 👁️ 8937
298人遇难,马航MH17坠机案宣判:山毛榉导弹击落飞机
365bet体育投注导航

298人遇难,马航MH17坠机案宣判:山毛榉导弹击落飞机

📅 07-21 👁️ 9979