如何使用npm打包发布nodejs程序包

  作者:zhanhailiang 日期:2014-11-20

不论基于任何语言开发内部项目,我们经常会在内部封装一些极具通用性的功能模块。如果我们觉得该通用模块对其它团队有可取之处,完全可以将其开源出去。npm就是发布nodejs程序包的最优工具。

1. 首先在npmjs.org注册一个账号:(可省)

2. 通过npm adduser来注册新账号或登录老账号:

[root@~/wade/nodejs/pv-tj]# npm adduser
Username: billfeller
Password:
Email: (this IS public) 531958936@qq.com

3. 在本地通过npm init完成相应的模块的开发,请注意在main文件中规范对外暴露的接口,注意,关于npm init的用法请参考之前的文章,这里不再详细说明:

4. 完成模块开发后就可以通过npm publish打包发布相应的程序包:

[root@~/wade/nodejs/uv-tj]# npm publish
+ uv-tj@1.0.0

关于npm publish的使用请见:

5. 此时你应该可以在npmjs.org上查到uv-tj包:

6. 接下来就可以像使用其它包一样使用uv-tj包了:

[root@~/wade/nodejs]# git clone [email protected]:billfeller/uv-tj-demo.git
Initialized empty Git repository in /root/wade/nodejs/uv-tj-demo/.git/
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), done.
[root@~/wade/nodejs]# cd uv-tj-demo/
[root@~/wade/nodejs/uv-tj-demo]# npm init
This 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 fields
and exactly what they do.
 
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
 
Press ^C at any time to quit.
name: (uv-tj-demo)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository: (https://github.com/billfeller/uv-tj-demo.git)
keywords: uv tj module demo
author: billfeller
license: (ISC) MIT
About to write to /root/wade/nodejs/uv-tj-demo/package.json:
 
{
  "name": "uv-tj-demo",
  "version": "1.0.0",
  "description": "uv-tj-demo ==========",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/billfeller/uv-tj-demo.git"
  },
  "keywords": [
    "uv",
    "tj",
    "module",
    "demo"
  ],
  "author": "billfeller",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/billfeller/uv-tj-demo/issues"
  },
  "homepage": "https://github.com/billfeller/uv-tj-demo"
}
 
 
Is this ok? (yes) yes
[root@~/wade/nodejs/uv-tj-demo]# vim package.json
[root@~/wade/nodejs/uv-tj-demo]# npm i uv-tj --save
uv-tj@1.0.0 node_modules/uv-tj
├── redis@0.12.1
└── express@4.10.2 (utils-merge@1.0.0, merge-descriptors@0.0.2, fresh@0.2.4, cookie@0.1.2, escape-html@1.0.1, range-parser@1.0.2, cookie-signature@1.0.5, finalhandler@0.3.2, vary@1.0.0, media-typer@0.3.0, methods@1.1.0, parseurl@1.3.0, serve-static@1.7.1, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.0, qs@2.3.2, etag@1.5.0, on-finished@2.1.1, debug@2.1.0, proxy-addr@1.0.3, send@0.10.1, accepts@1.1.3, type-is@1.5.3)
[root@~/wade/nodejs/uv-tj-demo]# vim index.js
[root@~/wade/nodejs/uv-tj-demo]# npm start
 
> uv-tj-demo@1.0.0 start /root/wade/nodejs/uv-tj-demo
> node index.js

此时通过浏览器访问:

完整代码请见:

7. 也可以直接git clone https://github.com/billfeller/uv-tj-demo到本地,直接执行npm
install来测试:

[root@~/wade/test]# git clone https://github.com/billfeller/uv-tj-demo
Initialized empty Git repository in /root/wade/test/uv-tj-demo/.git/
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 1), reused 4 (delta 0)
Unpacking objects: 100% (9/9), done.
[root@~/wade/test]# cd uv-tj-demo/
[root@~/wade/test/uv-tj-demo]# ls
index.js  LICENSE  package.json  README.md
[root@~/wade/test/uv-tj-demo]# npm install
uv-tj@1.0.0 node_modules/uv-tj
├── redis@0.12.1
└── express@4.10.2 (merge-descriptors@0.0.2, utils-merge@1.0.0, fresh@0.2.4, cookie@0.1.2, escape-html@1.0.1, range-parser@1.0.2, cookie-signature@1.0.5, finalhandler@0.3.2, vary@1.0.0, media-typer@0.3.0, methods@1.1.0, parseurl@1.3.0, serve-static@1.7.1, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.0, qs@2.3.2, on-finished@2.1.1, etag@1.5.0, debug@2.1.0, type-is@1.5.3, proxy-addr@1.0.3, send@0.10.1, accepts@1.1.3)
[root@~/wade/test/uv-tj-demo]# npm start
 
> uv-tj-demo@1.0.0 start /root/wade/test/uv-tj-demo
> node index.js
时间: 2024-10-29 10:46:19

如何使用npm打包发布nodejs程序包的相关文章

使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

本章将和大家简单分享下如何使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:https://www.nuget.org/ 此处我使用的是微软账号进行关联登录 登录成功后就可以管理个人信息了,此处就不做过多的描述了 二.下载nuget.exe文件进行ASP.NET Core类库打包 下载完成后如下: 接着修改类库版本等相关信息,点击类库右键属性并选择打包,如下所示: 修改完成后记得保存并重新生成

框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布

距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的原因,导致没有太多时间去搞东西.感觉亏欠了好多,所以这次一次性补上.废话不多说了,我们直接进入主题. 介绍这次讲解的库的更新: ajax全局配置 请求参数的拓展(增加json)和重构优化 初始化参数类型检查 浏览器错误回收机制 增加ajax请求blob(二进制)类型 跨域问题的总结和支持 npm打包

使用Phar来打包发布PHP程序

简单来说,Phar就是把Java界的jar概念移植到了PHP界. Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式. 下面举例说明如何创建和使用Phar: 假设我们的项目名称是user,包含三个文件: user/user.class.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php class user {     pr

Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)

转自:http://www.stardrad.com/blog/qt-5%E7%A8%8B%E5%BA%8F%E5%9C%A8windows%E4%B8%8A%E7%9A%84%E5%8F%91%E5%B8%83/ http://blog.163.com/[email protected]/blog/static/1582209320132291718389/ 最近做了个qt的程序,但是发布程序比较困难,因为qt5有着比较多的dll,如下两篇详述了qt dll依赖库,以及如何查询自己工程所用的d

发布Nuget程序包

很多人在使用Visual Studio开发.NET项目时都使用过程序包管理器.通过程序包管理器,我们可以引用各种有价值的组件.如下图所示 那我们如何将自己的程序包发布到nuget上呢?今天我们就来了解一下整个流程. 创建类库 创建自己的类库,创建后的文件如下图所示 创建nuspec文件 在类库目录下运行nuget spec命令,生成.nuspec文件.然后修改文件中的id.authors.owners等. 创建nupkg文件 在类库目录下运行nuget pack .csproj -Prop Co

vs2010打包发布安装程序(超全超详细,两种方法)

方法一: 使用安装向导 VS2010打包发布安装卸载教程 VS2010打包发布安装卸载教程 VS2010打包发布安装卸载教程 选择你的开发项目↓ VS2010打包发布安装卸载教程 选择你项目中bin/Debug下的主程序,点击“添加”按钮↓ VS2010打包发布安装卸载教程 VS2010打包发布安装卸载教程 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico(从这里开始向下,方法一和方法二的设置都一样了) VS2010打包发布安装卸载教程 3. 在创建的项目名称(Setup1)上点击右键:

Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在

在qizhi项目改版的时候, 所有代码都迁移好了, 但是compile的时候报程序包*****不存在, 具体到某一个类就是: 找不到符号. 下面这篇文章是正解 http://hbxflihua.iteye.com/blog/2431537 具体内容如下: ===========================+===========================+===========================+ 项目 dw(父类工程,定义各模块,指定模块依赖jar版本) |------

在npm上发布自己的包 全局包指令使用

看着公司的另外一个同事写了一个静态资源服务器进行打包后的预览, 但是个人觉得他定义的指令实在是太长, 每次都得打一大串, 个人实在受不了. 于是做了个梦, 再梦里自己就写了这么一个东西, 第二天正好公司空闲没啥事干就开始琢磨着去写. 需要准备的: node, npm账号, github仓库, 足够的耐性 开干 : 1.声明npm package.json npm init 2.随后键入package基本信息 name: vsv // 模块名称 version: (1.0.0) 1.0.1 //

Unity3d打包发布Android程序

unty3d这个款游戏引擎的强大之处就是编写一个程序.可以多平台发布.我的是安卓手机.所以此文介绍下发布安卓的过程 发布安卓前. 1:需要配置java环境.这里之前写过一篇java的配置  http://www.cnblogs.com/nsky/p/4495305.html 2:下载SDK,下载SDK的话国内有映像文件,这里推荐一个:http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 或者到我这里下载好的ADT ht