咱们闲话不多说,直接开始!

由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致。

文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍:

本文本着,以极少的文字说明以及极少的代码书写为原则来给大家演示!

文章中上传的模块不具备任何意义!

一、封装node.js模块时的必需项

1.创建package.json

每一个完整封装的node模块,必须含有一个参数明确的package.json文件!

以下为package.json的最精简配置:

{   
"name": "npmdesc",
"version": "0.0.1",
"main": "npmdesc.js"
}

package.json详细配置参照表:

2.创建npmdesc.js

exports.desc = function() {
console.log("如何发布一个自定义Node.js模块到NPM");
}

3.创建README.md文件,文件内容可以留白(该文件的作用是放置你愿意写的任何自述说明)

二、在github上建立包含该模块代码的公共存储库

1.注册github账户(这里不做详细阐述,假定你已经有了github账户)

2.创建项目

3.如果你初次使用git,请自行了解git的使用方法(这里仅做简单描述)

这里推荐查看廖雪峰老师对git的讲解:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1.ssh-keygen -t rsa -C "你注册所使用的邮箱"
2.登陆GitHub,打开“Account settings”,“SSH Keys”页面点“Add SSH Key”,填上ssh,在Key文本框里粘贴id_rsa.pub文件的内容。 以上步骤是使你的账户与git建立通讯的核心步骤!
仅用这些操作远远不够,如果你初次使用git,那么这一步可能将会使你看的云里雾里摸不清头脑,甚至失去继续了解下文的信心,所以我建议初学者先进行git的简单了解。

4.推送项目到刚刚创建的公共存储库(这里假定你已完成以上所有内容,并对git的使用有了简单的认识)

在你的项目根目录中依次运行以下git命令:

1.git init
2.git add npmdesc.js
git add package.json
git add README.md
3.git remote add origin git@github.com:BGOnline-CN/npmdesc.git
4.git commit -m "如何发布一个自定义Node.js模块到NPM"
5.git pull --rebase origin master
6.git push -u origin master

以上步骤的作用(这里的截图仅做辅助理解,截图内容并不完善,具体执行步骤需参考第4步):

git init (初始化本地git库)

git add (暂存文件)

git remote add origin git@github.com:XXXX/XXXX.git (使本地与远程库进行连接)

git commit -m "XXXX" (提交暂存到本地库,-m 为你的提交信息,这个是必填的!你需要告诉git你为什么要进行本次提交。)

git pull --rebase origin master (拉取远程库中的内容)

git push -u origin master (将本地项目推送到远程库)

5.修改package.json文件,填入你的项目在git公共存储库中的信息及你希望npm进行搜索时的关键字

{
"name": "npmdesc",
"version": "0.0.1",
"main": "npmdesc.js",
"repository": {
"type": "git",
"url": "https://github.com/BGOnline-CN/npmdesc"
},
"keywords": [
"npmdesc"
]
}

三、生成模块

1.在你的项目根目录打开控制台窗口键入命令

npm pack

此时npm会将你的项目打包为一个后缀名为.tgz的压缩包,这就是你的Node.js模块

2.别忘了将修改后的package.json及刚刚打包好的.tgz推送到git哦~这里我就不介绍了。

可能在进行git操作时或多或少的会出现一些你暂时无法理解的问题。如果刚好这时你遇到了,请不要害怕,细致的摸索及强大的搜索引擎可以帮助你!任何人都是这样摸爬滚打过来的。

当然不排除我的文章有疏漏 - -

四、发布到npm

1.在https://npmjs.org网站中建立账户(这里不做介绍)

2.在命令行中使用以下命令把创建的账户添加到环境中:

npm adduser

回车之后将会提示你输入用户名和密码以及邮箱,这里密码将不会明文显示。

出现下图说明命令执行成功!

3.发布模块到npm

在项目根目录执行以下命令:

npm publish

如果出现以上错误,使用如下命令即可解决

npm config set registry http://registry.npmjs.org 

执行该命令后需要重新进行登录,使用第2步中的命令即可

五、发布成功

如果一切正常,将会出现下图:

到这里你的 Node.js模块就已经发布成功了,你可以试试在npm官网中搜索它,并在项目中使用它了

如何发布一个自定义Node.js模块到NPM(详细步骤)的更多相关文章

  1. 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  2. Node.js CVE-2017-1484复现(详细步骤)

    0x00 前言 早上看Sec-news安全文摘的时候,发现腾讯安全应急响应中心发表了一篇文章,Node.js CVE-2017-14849 漏洞分析(https://security.tencent. ...

  3. Node.js CVE-2017-14849复现(详细步骤)

    0x00 前言 早上看Sec-news安全文摘的时候,发现腾讯安全应急响应中心发表了一篇文章,Node.js CVE-2017-14849 漏洞分析(https://security.tencent. ...

  4. Node.js模块封装及使用

    Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在c ...

  5. npm学习(六)之如何创建 Node.js 模块

    如何创建 Node.js 模块 Node.js 模块是一种可以发布到 npm 的包.当你创建一个新模块时,创建 package.json 文件是第一步. 你可以使用 npm init 命令创建 pac ...

  6. 实践案例丨教你一键构建部署发布前端和Node.js服务

    如何使用华为云服务一键构建部署发布前端和Node.js服务 构建部署,一直是一个很繁琐的过程 作为开发,最害怕遇到版本发布,特别是前.后端一起上线发布,项目又特别多的时候. 例如你有10个项目,前后端 ...

  7. Node.js模块

    每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ...

  8. 编写原生Node.js模块

    导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

  9. 编写原生的Node.js模块

    导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

随机推荐

  1. [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

    原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日 ...

  2. 从.net复制源代码中国农历阵列,必要做日历

    从.net复制源代码中国农历阵列,必要做日历 const { 闰月的月份.春节的阳历日期(农历正月初一).农历的每一个月天数 } c_arrLunarInfo: array [1900 .. 2100 ...

  3. C# 文件下载类

    using System; using System.Net; using System.IO; using System.Text; using System.Web; using System.W ...

  4. 怎样以学习单片机为契机,逐步成为优秀的project师

    现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...

  5. go orcale

    golang连接orcale   使用glang有一段时间了,最开始其实并不太喜欢他的语法,但是后来熟悉之后发现用起来还挺爽的.之前数据库一直使用mysql,连接起来没有什么问题,github上有很多 ...

  6. 动动手,写个knockout的分页模板

    最近一个项目用ASP.NET + knockout开发,很多列表页面都带分页,于是就有了写一个公共的分页模板的想法. 先把template写好: <script type="text/ ...

  7. android判断网络的类型

    转自:http://blog.csdn.net/xxxsz/article/details/8199031 判断网络类型是wifi,还是3G,还是2G网络 对不同的网络进行不同的处理,现将判断方法整理 ...

  8. C#编程总结

    C#编程总结--总目录 多年的C#实战经历,希望通过一个系列课程对C#编程做系统总结. 总结过去,展望未来.新的一年,新的征程,新的开始! 希望我们在2014梦想成真,马到成功! 1.C#编程总结(一 ...

  9. 实现 ready和bind事件

    Jquery揭秘系列:实现 ready和bind事件   讲这一节之前,先回顾之前的一篇<小谈Jquery>里面的代码: (function (win) { var _$ = functi ...

  10. defer 与 async

    defer HTML4.01定义的 只适用于外部脚本(IE4~7会支持内嵌脚本的defer属性) 告诉浏览器立即下载,延迟执行,脚本会延迟到整个页面全部解析完毕之后才运行 HTML5规范要求脚本按照他 ...