Open zwhu opened 8 years ago
记得之前看到一句话,大意是:
凡是能用 JS 写的轮子,最终都会用 JS 重写一遍
昨天把 Linux 的 tree 用 Node.js 重写了一遍,算法用到了深度优先搜索和前序遍历。具体用法可以看这里。
拿我写的walk-dir-tree 来做例子,可以看到基本目录结构如下:
walk-dir-tree
. ├── .git ├── .gitignore ├── .npmignore ├── bin | └── index ├── example | ├── a.js | ├── b.js | └── c | └── d.js ├── index.js ├── node_modules ├── package.json └── readme.md
.git,.gitignore 这两个不需要介绍了。.npmignore 的用法同 .gitignore, 用来忽略上传到 npm 仓库的文件。 bin 目录存放的是可执行脚本,稍候介绍。index.js 作为模块的主文件。 node_modules 存放的是引入的模块,package.json 为 npm 包的描述文件。 readme.md 为模块的介绍。
.git
.gitignore
.npmignore
bin
index.js
package.json
npm
readme.md
初始化包可以用过 npm init 命令来生成 package.json 文件,系统会出现交互提示,按照提示填写即可。
npm init
{ "name": "walk-dir-tree", // 包名称 "version": "0.0.4", // 包版本号 "description": "walk-dir-tree is a recursive directory listing command that produces a depth indented listing of files like tree", // 包描述 "keywords": ["tree", "directory", "walk-dir-tree", "co"], // 关键字 "repository": "https://github.com/zwhu/walk-dir-tree", // 包的repo链接 "bin": "./bin/index", // 命令行工具所要引入的包得位置 "main": "index.js", // 入口文件 "author": "zwhu <zwhu2014@foxmail.com>", // 作者 "license": "ISC", // 包的开源许可证 "dependencies": { // 包依赖 "co": "^4.6.0", "colors": "^1.1.2", "mz": "^2.1.0" } }
上面就是我的 package.json 的设置。在设置完 package.json 之后,可以把自己编写的包提交到 npm 去了。通过 npm adduser 在npm上创建一个输入自己的账户,千万要记住密码!
npm adduser
然后通过 npm publish <folder> 就可以上传 npm 包。如果在当前 package.json 所在的目录,执行$ npm publish ,等待上传好就可以。
npm publish <folder>
$ npm publish
上传完,去 npm 得官网,输入自己刚刚注册的账号,可以对 npm 包进行管理。
上面说的是普通的 npm 包,如果想像我一样上传一个可以让用户在本地执行的 shell 包,需要package.json中的 bin 字段中写上需要执行的文件的相对路径。用户安装的时候需要全局安装了$: npm install 项目名称 -g。 安装完在命令行中输入$: 项目名称 可以执行你上传的库。
$: npm install 项目名称 -g
$: 项目名称
记得之前看到一句话,大意是:
昨天把 Linux 的 tree 用 Node.js 重写了一遍,算法用到了深度优先搜索和前序遍历。具体用法可以看这里。
拿我写的
walk-dir-tree
来做例子,可以看到基本目录结构如下:.git
,.gitignore
这两个不需要介绍了。.npmignore
的用法同.gitignore
, 用来忽略上传到 npm 仓库的文件。bin
目录存放的是可执行脚本,稍候介绍。index.js
作为模块的主文件。 node_modules 存放的是引入的模块,package.json
为npm
包的描述文件。readme.md
为模块的介绍。初始化包可以用过
npm init
命令来生成package.json
文件,系统会出现交互提示,按照提示填写即可。上面就是我的
package.json
的设置。在设置完package.json
之后,可以把自己编写的包提交到 npm 去了。通过npm adduser
在npm上创建一个输入自己的账户,千万要记住密码!然后通过
npm publish <folder>
就可以上传 npm 包。如果在当前package.json
所在的目录,执行$ npm publish
,等待上传好就可以。上传完,去 npm 得官网,输入自己刚刚注册的账号,可以对 npm 包进行管理。
上面说的是普通的 npm 包,如果想像我一样上传一个可以让用户在本地执行的 shell 包,需要
package.json
中的 bin 字段中写上需要执行的文件的相对路径。用户安装的时候需要全局安装了$: npm install 项目名称 -g
。 安装完在命令行中输入$: 项目名称
可以执行你上传的库。