逐浪技术--Zoomla!逐浪CMS官方博客

面向开源的-创建属于自己的Node.JS项目-创建npm项目全教程

作者:浪花 发布时间:2018-03-03 来源:佚名 点击数:

浪花

博主:浪花
个人座右铭:似水的年华,谱写青春的歌曲,还有一起奋斗的同事,以及激情的浪花~!

面向开源,随着微软开源计划的不断深入,如何面向npm发布项目,是广大windows开发者的日常,Zoomla!逐浪CMS在Github上也有了持续发布,为此我们带来了完整的教程。


我们基于nodejs平台上面的npm上,可以随意下载很多npm安装包。那我们如何创建自己的npm包呢?很简单,废话少说,开始做~

开始做之前nodejs默认是要安装的,怎么安装自行百度其他教程。

首先在npm网站上注册一个账号,这个账号之后会用到。

npm网站地址:https://www.npmjs.com/

npm网站注册地址:https://www.npmjs.com/signup

注册完毕,回到我们的电脑。Windows直接cmd到命令行:

//输入以下命令,会提示输入用户名、密码、邮箱,这些都是注册时填写过的。
npm login



untitled.png

创建一个testxxxxx文件夹,cd到testxxxxx文件夹中,然后下载基础配置文件:

//输入以下命令,会提示配置包的相关信息,名称版本等等,都是包的基本配置信息
npm init


untitled.png


配置完毕开始写自己的包内代码: 

//创建一个index.js文件,文件内的代码如下,直接输出123456789
module.exports = 123456789;


保存完毕,一个简单的包就开发好了,就可以直接发布到npm上供大家下载。下面就介绍发布:

//退出当前文件夹,开始命令行发布包,命令如下:
npm publish testxxxxx




“学骑自行车最快的方式就是先骑上去”

#安装node和npm

安装node(注意:需要Python 2.6或2.7已经安装)

$ wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz$ tar -zxvf node-v0.10.26.tar.gz
$ make && make install

成功安装node之后,npm(node package manager)已经包含在内了,不需要独立安装,可以执行一下npm检查是否安装好。

$ npm 
Usage: npm <command>

#创建repository

接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。

#初始化package.json

接下来我们创建package.json文件,这个文件包含了module的所有信息,比如名称、版本、描述、依赖、作者、license等。笔者以自己的easy_mongo(注意:npm要求项目的名称必须为小写字母)项目为例,看如何创建package.json

首先创建我们module的目录

$ mkdir easy_mongo && cd easy_mongo

之后执行npm init,系统会提示你输入所需的信息,不想输入的直接输入Enter可以跳过。

$ npm initThis utility will walk you through creating a package.json file.It only covers the most common items, and tries to guess sane defaults.See `npm help json` for definitive documentation on these fieldsand exactly what they do.Use `npm install <pkg> --save` afterwards to install a package andsave it as a dependency in the package.json file.Press ^C at any time to quit.name: (node) easy_mongo
version: (0.0.0) 0.1.0description: An easy mongodb client for node.js based on native mongodb driver.entry point: (index.js) test command: make test
git repository: https://github.com/JeremyWei/easy_mongo.gitkeywords: Mongodb node easy 
author: JeremyWeilicense: (BSD-2-Clause) MIT

输入完成之后,系统会要你确认文件的内容是否有误,如果没有问题直接输入yes,那么package.json就创建好了。

About to write to /Users/weizhifeng/dev/node/package.json:{
  "name": "easy_mongo",
  "version": "0.1.0",
  "description": "An easy mongodb client for node.js based on native mongodb driver.",
  "main": "index.js",
  "directories": {
    "example": "examples"
  },
  "scripts": {
    "test": "make test"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/JeremyWei/easy_mongo.git"
  },
  "keywords": [
    "Mongodb",
    "node",
    "easy"
  ],
  "author": "JeremyWei",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/JeremyWei/easy_mongo/issues"
  }}Is this ok? (yes)

npm init创建的package.json文件只包含了基本的信息,我们还需要加入对其他module的依赖关系:

"dependencies": {
	"mocha" : "1.18.2",
	"should" : "3.3.0",
	"mongodb" : "1.3.19"}

#项目结构

package.json文件只是第一步,要完成一个module,我们还需要许多其他文件,整体的文件夹结构如下:

easy_mongo├─┬ lib│ └── easy_mongo.js├─┬ test│ └── all.js├── .gitignore├── .npmignore├── .travis.yml├── index.js├── LICENSE├── makefile├── package.json├── README.md

这些文件的作用是:

#持续集成

开源项目多如牛毛,从中找出靠谱的项目需要花费一定的精力,开发者都会对持续更新,并且经过测试(很多公司采用)的项目更加的信赖,对于刚上线并且用户数量很少的项目开发者都会有个疑虑:这项目靠谱吗?所以你需要对自己的项目打上一个标识:老子的项目靠谱。如何做?持续集成。

目前Github已经整合了持续集成服务travis,我们只需要在项目中添加.travis.yml文件,在下一次push之后,travis就会定时执行npm test来测试你的项目,并且会在测试失败的时候通知到你,你也可以把项目当前的状态显示在README.md中,让人一目了然,比如:

Build Status

.travis.yml是一个YAML文件,关于node.js相关的配置见这里,例子如下:

language: node_js
node_js:
   - "0.10"
   - "0.8"
   - "0.6"	 services:
	- mongodb

这个例子的是让travis在node.js的0.6.x,0.8.x,0.10.x三个版本下对项目进行测试,并且需要mongodb的服务。

#发布

完成了上面的步骤之后,我们接下来要在www.npmjs.org注册一个账号,这个账号会被添加到npm本地的配置中,用来发布module用。

$ npm adduser	
Username: your namePassword: your passwordEmail: yourmail[@gmail](/user/gmail).com

如果出现以下错误,可能是你的npm版本太低,通过sudo npm install -g npm升级一下。

npm WARN adduser Incorrect username or password
npm WARN adduser You can reset your account by visiting:npm WARN adduser 
npm WARN adduser     http://admin.npmjs.org/resetnpm WARN adduser 
npm ERR! Error: forbidden may not mix password_sha and pbkdf2
npm ERR! You may need to upgrade your version of npm:npm ERR!   npm install npm -g
npm ERR! Note that this may need to be run as root/admin (sudo, etc.)

成功之后,npm会把认证信息存储在~/.npmrc中,并且可以通过以下命令查看npm当前使用的用户:

$ npm whoami

以上完成之后,我们终于可以发布自己的module了:

$ npm publish --tag 0.1.0npm http PUT https://registry.npmjs.org/easy_mongonpm http 201 https://registry.npmjs.org/easy_mongo+ easy_mongo[@0](/user/0).1.0

npm社区版本号规则采用的是semver(语义化版本),主要规则如下:

版本格式:主版号.次版号.修订号,版号递增规则如下:
	主版号:当你做了不相容的 API 修改,
	次版号:当你做了向下相容的功能性新增,
	修订号:当你做了向下相容的问题修正。
	先行版号及版本编译资讯可以加到「主版号.次版号.修订号」的后面,作为延伸。

至此,我们已经成功把module发布到了npmjs.org,是不是很简单,快动手把自己的module也贡献出来吧。

Have fun :)


本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友