一分钟教你发布npm包
一分钟教你发布npm包
在使用hexo时遇到了一些翻译相关的问题,由于是自身需求。因此需要把改好的js插件重新打包发布一下,又没接触过前端知识,故不太了解流程,也懒得去看文档。于是搜索简易的操作过程,发现此篇后教程后按步骤很快解决了发包的问题,故转载至此,啥时候再用到了也方便查看
文章简介:
1、摘要:什么是npm?
2、如何发布一个自己的npm包
3、发布错误集锦
摘要:什么是npm?
npm是javascript著名的包管理工具,是前端模块化下的一个标志性产物
简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率
和移动端开发中,iOS使用的Cocoapods,Android使用的maven有异曲同工之妙。
如何发布一个自己的npm包
1、创建一个npm的账号
- 发布包之前你必须要注册一个npm的账号
2、初始化一个简单的项目发布
a、本地创建一个文件夹:例如:z-tool
b、执行命令进入目录:
cd z-tool
c、执行
npm init
初始化项目。默认一路回车就行1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37sh-neverleave:z-tool neverleave$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (z-tool)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/neverleave/Desktop/z-tool/package.json:
{
"name": "z-tool",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes)1
2
3
4
5
6
7
8
9
10
11
12默认字段简介:
name:发布的包名,默认是上级文件夹名。不得与现在npm中的包名重复。包名不能有大写字母/空格/下滑线!
version:你这个包的版本,默认是1.0.0。对于npm包的版本号有着一系列的规则,模块的版本号采用X.Y.Z的格式,具体体现为:
1、修复bug,小改动,增加z。
2、增加新特性,可向后兼容,增加y
3、有很大的改动,无法向下兼容,增加x
description:项目简介
mian:入口文件,默认是Index.js,可以修改成自己的文件
scripts:包含各种脚本执行命令
test:测试命令。
author:写自己的账号名
license:这个直接回车,开源文件协议吧,也可以是MIT,看需要吧。d、在z-tool文件夹中创建一个文件名为index.js的文件,简单的写了一下内容。
1
2
3!function(){
console.log(`这是引入的包入口`)
}()
3、如果本机第一次发布包(非第一次可忽略)
在终端输入npm adduser,提示输入账号,密码和邮箱,然后将提示创建成功,具体如下图。
【注意】npm adduser成功的时候默认你已经登陆了,所以可跳过第四步。
最后一行显示登录信息,as 后面是用户名。on 后是源地址,如果不是https://registry.npmjs.org/
,比如是淘宝源,请切换。可以参考https://segmentfault.com/a/11...
4、非第一次发布包
在终端输入npm login,然后输入你创建的账号和密码,和邮箱,登陆,结果同步骤三。
5、npm publish 发包
成功发布:
1 | sh-neverleave:z-tool neverleave$ npm publish |
注意:如果项目里有部分私密的代码不想发布到npm上,可以将它写入.gitignore 或.npmignore中,上传就会被忽略了
6、查询发布的包
到npm官网全局搜索即可
7、安装使用方式
和其他包使用方式一致,具体使用可以看源码介绍或者README.md。
8、如何撤销发布的包
终端执行 npm unpublish
例如:
1、npm unpublish z-tool@1.0.0 删除某个版本
2、npm unpublish z-tool --force 删除整个npm市场的包
不过撤包推荐用法:
npm unpublish
的推荐替代命令:npm deprecate <pkg>[@<version>] <message>
使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告
例如:npm deprecate z-tool '这个包我已经不再维护了哟~'
【注意】如果报权限方面的错,加上–force
9、发布错误集锦
1、需要提高版本号
1 | #1、发包 npm publish 失败 |
2、发包 npm publish 失败
解决方案:终端执行: npm publish –access public
参考:https://stackoverflow.com/que...
1 | #1、发包 npm publish 失败 |
3、确保登录的用户账号正确
1 | sh-neverleave:npm neverleave$ npm publish |
4、登录时需要在username 前加‘~’,具体大家可以验证
1 | sh-neverleave:npm neverleave$ npm login |
5、无权限删除线上的包(撤包有时间限制,24小时)
解决方案:加上 –force
1 | sh-neverleave:z-tool neverleave$ npm unpublish z-tool |
6、删除npm市场的包同名的24小时后才能重新发布
1 | sh-neverleave:z-tool neverleave$ npm publish |