# 造轮子(NPM)篇

注册npm账号,并登陆。

```bash
npm login
```

## 初始化项目

```bash
mkdir xxx-tool
cd xxx-tool
npm init
```

创建各类配置文件,如果使用`ES2015`及之后特性,需要用到`Babel.js`的,需要编译发布。

参考项目: <https://github.com/willin/waliyun>

package.json:

```js
"scripts": {
  "compile": "./node_modules/.bin/babel src --out-dir dist",
  "prepublish": "npm run compile"
}
```

## 发布至NPM

### 1.检查`.gitignore`和`.npmignore`文件是否配置好

通常两者内容相近。如:

```
node_modules/
*.log
.DS_Store
```

`.gitignore`中一般忽略生产环境编译输出的目录`dist/`,`.npmignore`中忽略源码目录`src/`。

### 2.检查`package.json`中的版本号

相同版本号不能反复发布。不能降级发布。每次需要更新并累加版本。

### 3.发布

```bash
npm publish
```

发布测试版本:

```bash
npm publish --tag beta
```

## 发布私有模块到NPM

初始化项目的时候可以加入参数:

```bash
npm init --scope=<your_scope>
```

或者直接修改`package.json`中的项目名称为:

```bash
@scope/project-name
# 或
@username/project-name
```

参考文档: <https://docs.npmjs.com/private-modules/intro>