Node: npm publish 发布npm包
程序员文章站
2022-06-01 08:49:03
...
1.初始化 package.json
$ npm init
结果:
{
"name": "react-pc-ui",
"version": "1.0.0",
"description": "\"React PC 组件库(React pc component library)\"",
"main": "index.js", // publish 入口
"scripts": {
"start": "webpack-dev-server --open --config ./build/webpack.dev.config.js",
"build:component": "webpack --config ./build/webpack.dist.component.config.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/xxx/xxx.git",
"webpack": "v4.6.0",
"webpack-cli": "^2.0.14",
"node": "v8.11.1",
"npm": "v5.6.0"
},
"keywords": [
"React",
"PC",
"component",
"library",
"antd",
"JavaScript",
"UI",
"redux",
"react-redux",
"react-router",
"webpack"
],
"author": "https://github.com/lianpf",
"license": "ISC",
"devDependencies": {
"uglifyjs-webpack-plugin": "^1.2.5",
"url-loader": "^1.0.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.14",
"webpack-dev-server": "^3.1.3",
"webpack-merge": "^4.1.2"
},
"dependencies": {
"classnames": "^2.2.5",
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-redux": "^5.0.7",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"react-router-redux": "^4.0.8",
"redux": "^4.0.0"
}
}
- name:填写你这个包的名字,默认是你这个文件夹的名字。不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm install 你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。
- version:你这个包的版本,默认是1.0.0
- description:描述你的包是干嘛用的
- main:入口文件,默认是Index.js,你也可以自己填写你自己的文件名
- test command:测试命令,这个直接回车就好了,目前还不需要
- git repository:这个是git仓库地址, 如果没有的话,直接回车继续。
- keyword:这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引
- author:写你的账号或者你的github账号吧
- license:开源文件, 直接回车
2. 验证npmjs账号
初次
$ npm adduser
非初次
$ npm login
3.发布
publish之前
你需要在你package.json文件的入口文件(我的是index.js)增加一段代码,
module.exports=require('./lib')
不要问我为什么要这么做,因为你npm install其他包的时候,其他包里面的也是这样写
还有如果你这次仅仅是想测试这个流程, 包里没有什么实质性的内容的话, 那么这个文件里可以直接写这么一句hello world
exports.sayHello =function(){
return 'Hello World';
}
publish
选择你要发布的包所在的项目, 以我的为例(包在react-pc-ui下):
lianpf$ cd react-pc-ui
[react-pc-ui] lianpf$ npm publish
4.验证安装
$ npm install xxx --save-dev
5.你可能会遇到的问题
镜像问题
no_perms Private mode enable, only admin can publish this module
或者publish成功, 但是npm.js个人信息哪里查看不到包
那么可能是你用了国内的镜像地址了,只需要重新把地址注册回npmjs即可
$ npm config set registry http://registry.npmjs.org // 重新把地址注册回npmjs
发布之后, 再重新设置为淘宝镜像或者你们公司自己的镜像
命名问题
npm ERR! you do not have permission to publish "your module name". Are you logged in as the correct user?
提示没有权限,其实就是你的module名在npm上已经被占用啦,这时候你就去需要去https://www.npmjs.com搜索你的模块名称,如果搜索不到,就可以用,
并且把package.json里的name修改过来,重新npm publish
版本号规范
主要规则版本格式:主版本号.次版本号.修订号,版本号递增规则如下
主版本号:当你做了不兼容的 API 修改,
次版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正
转载于:https://www.jianshu.com/p/1b80e072c0dc