原文链接http://blog.gezhiqiang.com/2017/07/26/npm-modulenpm(NodePackageManager)是Node.js的包管理工具。npm社区有很多有用的模块。在开发过程中,我们也会提取项目中一些有用的功能模块。此时可以发布到npm,开源到github,方便其他人使用,并根据issue进一步完善和加强模块的功能。下面我将基于自己的一个模块koa2-validation简单介绍发布npm模块的方法和步骤以及一些注意事项。创建项目通常我们的项目应该在github上开源,方便其他同学提issue。这样就可以创建一个github项目了(默认情况下github大家都知道怎么用,不知道的请自行google)。另外本机默认已经安装了node和npm(如果不清楚请参考使用nvm安装node)。项目结构在github上创建项目时,检查默认的.gitignore、License和README文件。package.json文件是通过npminit在本地创建的,需要一些模块信息,比如名称、版本、描述、作者、许可等。$npminit另外还需要一些eslint文件。具体目录结构如下:.├──.eslintrc.json//eslint文件├──.git├──.gitignore//.gitignore├──.npmignore//.npmignore不需要发布文件├──.travis.yml//travisCI├──LICENSE├──README.md├──index.js//入口文件├──lib//主要逻辑代码├──node_modules├──package-lock.json├──package.json└──test//测试用例的主要逻辑代码放在lib目录下。不清楚的同学可以参考koa2-validation的目录结构。测试项目通常需要添加必要的单元测试。因为其他学生可能会使用它,所以这一点尤为重要。关于节点测试,大家会根据自己的习惯使用mocha、jest等。我个人的偏好是使用ava进行单元测试。如果不知道如何使用avatest,可以参考这篇文章。有关更多测试结构,请参阅此处。关于持续集成,通常在github上用的比较多的是travis。Travis使用起来也非常简单方便。首先,你需要关联你的github账号和travis,travis会同步你的github仓库。然后,需要打开对应项目的CI开关。最后在项目中定义对应的.travis.yml,实现项目推送时自动运行测试脚本。更多关于travis的使用可以参考这篇文章和官方文档。以下是我的.travis.yml文件。#指定运行环境语言:node_js#指定nodejs版本,可以指定多个branch提交脚本会运行branches:only:-master添加徽章并完成功能开发后,最好在README中详细介绍模块的使用说明。另外,我们经常看到github项目有很多漂亮的徽章,比如下载量、测试状态等。那么如何添加这些徽章。请参阅盾牌和本文。发布项目项目完成后,我们需要将模块发布到npmjs。通常我们需要查看我们的模块是否已经注册,并确定我们的模块名称。首先,我们需要在npm官网注册一个账号。然后添加到本地配置。$npmadduser用户名:dennis.ge密码:****邮箱:gedennis@163.com然后验证你自己的配置。最后npmwhoami在package.json中定义版本,通过npmpublish发布模块。npmpublishnpmpublish经常会遇到发布不成功的情况。npmWARNadduser用户名或密码错误npmWARNadduser可以通过访问重置账号:npmWARNaddusernpmWARNadduserhttp://admin.npmjs.org/reset这个时候一般可能是nvm安装的npm,或者你的npmregistry不是npmjs,可以通过nrm修改npm源。这里只是一些简单的发布步骤。更多版本定义和升级请参考本文。至此,我们已经成功发布了一个npm模块。小结本文简单介绍了如何发布npm模块。包括如何创建项目、项目结构、测试、持续集成以及如何添加徽章等。关于npm模块的发布,需要进一步了解版本的定义,以及更深入的内容如作为版本升级。参考[1]如何将Node模块发布到NPM社区[2]深入安装和发布Node模块[3]如何简单入门持续集成(Travis-CI)[4]添加和设置GitHub项目徽章
