如何发布自己的npm包到npm公共仓库?
一、创建包目录(必须满足三个条件)
- 独占目录(该目录内只有包相关的东西)
- 根目录必须存在
package.json
(可以通过npm init
创建) package.json
有三个必填字段
•name
包名(全局唯一,全小写,不能和已经npm仓库内以及发布的重复)
•version
版本号(语义化,如 1.0.0)
•main
入口文件路径(require 时实际加载的文件)- README.md文件(项目说明)
Joney/
├─ package.json
├─ index.js // 统一导出
├─ README.md
└─ src/
├─ dateFormat.js
└─ htmlEscape.js
二、示例Demo
js
//dateFormat.js
function dateFormat(dateStr) {
const dt = new Date(dateStr);
const pad = n => (n > 9 ? n : '0' + n);
return `${dt.getFullYear()}-${pad(dt.getMonth()+1)}-${pad(dt.getDate())} ${pad(dt.getHours())}:${pad(dt.getMinutes())}:${pad(dt.getSeconds())}`;
}
module.exports = { dateFormat };
js
//htmlEscape.js
function htmlEscape(str) {
return str.replace(/<|>|"|&/g, m =>
({'<':'<','>':'>','"':'"','&':'&'}[m]));
}
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, m =>
({'<':'<','>':'>','"':'"','&':'&'}[m]));
}
module.exports = { htmlEscape, htmlUnEscape };
js
//index.js(入口)
module.exports = {
...require('./src/dateFormat'),
...require('./src/htmlEscape')
};
json
// package.json 模板
{
"name": "Joney",
"version": "1.1.0",
"main": "index.js",
"description": "提供了格式化时间、HTMLEscape相关的功能",
"keywords": ["itheima", "dateFormat", "escape"],
"license": "ISC"
}
二、发布
注册账号 https://www.npmjs.com (自己的包可以在这里找到)
切到官方源
bashnpm config set registry https://registry.npmjs.org
登录
bash//在项目根目录下运行 npm login
发布
bash//在项目根目录下运行 npm publish
三、删除包(谨慎)
- 只能在发布 72 小时内 删除
- 删除后 24 小时内 禁止再次发布同名包
npm unpublish 包名 --force