npm 发布一个自己的包

NPM 是 node 自带的包管理工具, 我们在平时项目提炼出许多重用性比较强的代码,把这些代码整合成一个模块发布到npm社区,可以让自己模块做更好版本管理(不会因为自己某天改了一行代码就导致所有依赖项目歇菜),新建项目的时候也不用copy代码这种粗糙的方法引入。

最近在npm上发布了两个包 si-log, si-store

package.json

要发布自己的包,需要有 package.json 文件(现在的项目应该都有了吧), 如果没有需要在项目目录下执行 npm init ,初始化完成后,会看到 package.json 文件内容像这样

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
{
"name": "si-store", // 包的名称
"version": "0.1.1", // 版本
"description": "基于Web Storage的缓存库", // 介绍
"main": "dist/si-store-common.js", // 入口文件
// 代码托管信息 (目前是在github下)
"repository": {
"type": "git",
"url": "git+https://github.com/aa953788477/store.js.git"
},
// 关键字, 便于搜索
"keywords": [
"store"
],
// 作者
"author": "Myron Liu",
//开源协议
"license": "MIT",
// 提bug的页面 默认是github 的 issues
"bugs": {
"url": "https://github.com/aa953788477/store.js/issues"
},
// 主页
"homepage": "https://github.com/aa953788477/store.js#readme",
}

采用模块化方式编码

node 包使用遵循模块化方案(commonJS), 如果使用到了babel转码,也可以使用es6的语法发布

1
2
3
4
5
6
7
8
9
10
11
12
13
// si-store/index.js
import Store from './Store'
import {register} from './storage/index.js'
let store = new Store()
store.version = '0.1.1'
store.create = function (options) {
return new Store(options)
}
store.register = register
export default store

编写 README.md

readme 是介绍你的包,需要介绍你的包解决了那些问题,最基本的使用方式是怎么样的,有那些api,像这样

si-store

一个基于 Web Storage 的存储库,提供简单的api操作,可以设置缓存时间

安装

用 npm 安装

1
npm install si-store --save

直接在 script 标签中导入,先要在github 上下载代码,然后:

1
<script src="si-store.js" charset="utf-8"></script>

开始使用

…..

API

…..

License

MIT

Copyright (c) 2016 myron

README.md 文件要把你的包使用方法写清楚,这样可以增加你项目的star哦.

发布

首先

把代码全部提交到github上,然后生成tag, 使用tag做版本管理

1
2
3
git push
git tag 0.1.0
git push --tag

publish

然后执行 publish 命令即可

1
npm publish

这样我们的包就发布完成了,可以上 NPM 官网 上搜索下自己包是否存在,

后续更新

当修复了bug,或者增加了一些新的功能后需要重新发布这个包,首先,修改 package.json 中version,然后生成新的 tag 发布.

1
2
3
git tag 0.1.1
git push --tag
npm publish

最好新建一个CHANGELOG.md 文件,记录下版本更新了那些东西。

文章目录
  1. 1. package.json
  2. 2. 采用模块化方式编码
  3. 3. 编写 README.md
  4. 4. 发布
    1. 4.1. 首先
    2. 4.2. publish
  5. 5. 后续更新
,