`
jobar
  • 浏览: 347439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nodejs自己编写发布模块

 
阅读更多
1 新建模块目录结构
album_mgr
--lib(文件夹)
--test(文件夹)
package.json
Readkme.md
2 编写package.json文件
{
	"name": "album-manager",
	"version": "1.0.0",
	"main": "./lib/albums.js",//设置main启动文件
	//"private": true
}

此文件至少要包含一个模块名name和main js文件,以便node可以从此文件加载模块。
如果node找不到package.json文件或没有指定main js文件,它会找index.js或者index.node来完成模块编译。
同时它会告诉npm模块名为album-manager,默认的启动js文件是albums.js其位于lib子目录下。
3 Readme.md(可选)
模块说明文档,github.com使用的标准文件格式。
4 编写核心js文件
  编写albums.js 和 album.js放入lib目录下
  albums.js
	var fs = require('fs'),album = require('./album.js');
	exports.version = "1.0.0";
	exports.albums = function (root, callback) {...};

  album.js
var path = require('path'),fs = require('fs');
	function Album(album_path){
		this.name = path.basename(album_path);
		this.path = album_path;
	}
	Album.prototype.name = null;
	Album.prototype.path = null;
	Album.prototype._photos = null;
	Album.prototype.photos = function(callback){...};
	exports.create_album = function(path){
		return new Album(path);
	}

5 写个测试用例测下下
test.js
	var amgr = require('./album_mgr');
	amgr.albums('./',function(err,albums){
		if(err){
			console.log('unexpected error: ' + JSON.stringify(err));
			return;
		}
		
		(function iterator(index){
			if(index == albums.length){
				console.log('Done');
				return;
			}
			albums[index].photos(function(err,photos){
				if(err){
					console.log('Err loading albums: ' + JSON.stringify(err));
					return;
				}
				console.log(albums[index].name);
				console.log(photos);
				console.log('');
				iterator(index +1);
			});
		})(0);
	})

node node\test.js
结果:
American
[]

China
[ 'CA Technologies.png',
  'Caterpillar.jpg',
  'Charter.jpg',
  'chubb.png',
  'Chunghwa Telecom.jpg',
  'CIFIN.png',
  'Citi.png',
  'CMCC.jpg',
  'Coca Cola.png' ]

Indian
[]

Done
6 本地部署模块
  在package.json中加入"private": true告诉npm暂时还不会将module部署到npm库中。现在我们用npm link告诉npm在本地的默认库中放置一个link连接到album-manager包。
  C:\Users\xxx\node\album_mgr>npm link
C:\Users\xxx\AppData\Roaming\npm\node_modules\album-manager -> C:\Users\xxx\node\album_mgr
7 使用模块
  要使用上面部署的本地模块,还需要做两件事情
  (1)在代码中要引用"album-manager"而不是"album_mgr",因为npm使用package.json中的name值
  (2)为每个使用模块的project,用npm创建一个到album-manager模块的引用
C:\Users\xxx>mkdir test_project
C:\Users\xxx>cd test_project
C:\Users\xxx\test_project>npm link album-manager
C:\Users\xxx\node_modules\album-manager -> C:\Users\xxx\AppData\Roaming\npm\node_modules\album-manager -> C:\Users\xxx\node\album_mgr
C:\Users\xxx>dir node_modules
Volume in drive C has no label.
Volume Serial Number is 2CCD-F330
Directory of C:\Users\xxx\node_modules

07/07/2014  11:03 AM    <DIR>          .
07/07/2014  11:03 AM    <DIR>          ..
07/07/2014  11:03 AM    <JUNCTION>     album-manager [C:\Users\xxx\AppData\Roaming\npm\node_modules\album-manager]
06/24/2014  03:01 PM    <DIR>          formidable
               0 File(s)              0 bytes
               4 Dir(s)   5,949,730,816 bytes free
8 发布模块
如果我们想把编写的模块共享给其他人,我们可以用npm publish命令将它发布到官方的npm注册,要做的是
(1)移除package.json中private行
(2)用npm adduser在npm注册服务器上创建一个账号
(3)在模块目录中运行npm publish将其push到npm。

C:\Users\xxx>npm adduser
Username: myname
Password:
Email: (this IS public) xxx@163.com

C:\Users\xxx\node\album_mgr>npm publish
+ album-manager@1.0.0
如果我们想从npm注册那里取消发布也很简单
C:\Users\xxx\node\album_mgr>npm unpublish
npm ERR! Refusing to delete entire project.
npm ERR! Run with --force to do this.
npm ERR! npm unpublish <project>[@<version>]
npm ERR! not ok code 0

C:\Users\xxx\node\album_mgr>npm unpublish --force
npm WARN using --force I sure hope you know what you are doing.
- album-manager@1.0.0
用force强制取消发布。
分享到:
评论

相关推荐

    NodeJS C++,打印机模块源码

    在这个“NodeJS C++,打印机模块源码”项目中,开发人员编写了一个C++模块,该模块被包装成NodeJS的addon,以便在NodeJS或Electron环境中使用。C++是底层系统编程的强大工具,能够直接访问操作系统的API,如Windows的...

    NodeJs 几个npm模块

    Grunt 是一个 JavaScript 任务运行器,它允许开发者通过编写配置文件来自动化常见的构建任务,如编译 SASS/LESS 文件为 CSS、压缩 JavaScript 和 CSS、合并文件、自动刷新浏览器等。Grunt 使用 JSON 格式的配置文件...

    使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解

    在Node.js中,fs(file system)模块是用于进行文件和目录操作的核心模块。这个模块提供了丰富的API,允许开发者执行诸如读取、写入、删除、追加等操作。下面我们将详细探讨fs模块的使用方法。 首先,导入fs模块...

    nodejs+mysql模块化实例代码

    总结一下,这个`nodejs+mysql模块化实例代码`展示了如何在Node.js项目中通过模块化的方式来管理数据库操作。通过创建一个独立的`db.js`文件来封装连接逻辑,我们可以轻松地在多个模块中重用数据库连接,并且使用...

    【课件】CommonJs 和 Nodejs 模块、自定义模块1

    而文件模块则是用户自己编写的 JavaScript 文件,它们需要在运行时动态加载,虽然加载速度相对较慢,但灵活性更高,可以满足各种自定义需求。 在 Node.js 中创建自定义模块,你需要将常用功能封装到独立的 ...

    NodeJS学习笔记和代码

    2. **模块系统**:NodeJS使用CommonJS模块规范,通过`require`引入模块,`exports`或`module.exports`导出模块,便于代码组织和复用。 3. **V8引擎**:NodeJS的高性能得益于Google的V8引擎,它可以将JavaScript代码...

    Nodejs基础知识

    在Nodejs中写一个模块的流程:1 创建模块,也就是一个入口的js文件,里面加入一些特定的功能,teacher.js.2 导出模块,把这个功能和这个文件也就是这个模块名建立关系 exports.add = function() {}3 加载模块,在...

    nodejs基于WS模块实现WebSocket聊天功能的方法.docx

    ### Node.js 基于 WS 模块实现 WebSocket 聊天功能详解 #### 一、概述 在 Web 开发领域,实时通信是一项重要的技术需求。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许服务器端与客户端之间建立...

    nodejs 模块

    2. **自定义模块**:开发者自己编写的模块,可以是单个文件也可以是一组文件。自定义模块通常使用`module.exports`来导出公共接口。 #### 三、Node.js模块加载机制 理解Node.js模块如何加载对于编写高效的应用程序...

    NodeJS整理手册文档

    5. Stream模块:处理数据流,如读取文件、网络传输等,采用可读/可写流实现高效的数据处理。 三、NodeJS进阶特性 1. NPM(Node Package Manager):NodeJS的包管理器,用于安装、管理和共享第三方模块,是NodeJS...

    nodejs简单读写excel内容的方法示例

    为了更好地理解和使用这些模块,开发者需要深入阅读各自模块的官方文档,理解其API的细节,以及如何处理可能出现的异常和错误。 在此基础上,开发者还可以根据实际需求扩展更多的功能,例如写入不同格式的Excel文件...

    NodeJS中文文档精编.pdf 全文免费

    NodeJS 中的模块使用 exports 对象来向外暴露成员,而 require 函数用来引入模块。exports 是一个对象,require 函数由 Node 提供,它返回的对象其实是 module 对象中的 exports 对象。 NodeJS 的应用非常广泛,...

    node.fs模块的使用

    nodejs的关于fs模块的编写,引入fs模块,修改文件内容。

    NodeJS开发指南_nodejs开发指南_

    本指南将深入探讨NodeJS的核心概念、开发工具、模块系统、网络编程以及常见的应用实践。 一、NodeJS基础 NodeJS的核心是事件驱动、非阻塞I/O模型,这使得它在处理高并发请求时表现优秀。其单线程执行和异步编程的...

    NodeJS 安装包

    这个版本的发布日期可能是在 2018 年,因为 NodeJS 的版本更新较为频繁,通常每个季度会发布一个主要版本。 在 NodeJS v8.11.3 中,包含了一些重要的改进和修复。例如,它可能包含了 V8 引擎的性能优化,提高了 ...

    random:nodejs 类中的模块 5

    在JavaScript编程语言中,"random:nodejs 类中的模块 5"这个标题可能是指一个关于在Node.js环境中创建和使用自定义模块来生成随机数的示例。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在...

    Nodejs原生模块的一个示例

    Node.js原生模块是通过C++或者其他低级语言编写的,它们可以提供比纯JavaScript更高的性能,特别是当处理系统级操作、I/O密集型任务或底层硬件交互时。本示例将探讨如何创建和使用一个Node.js原生模块,这对于理解和...

    NodeJS学习手册

    这份手册将涵盖NodeJS的基础概念、核心模块、网络编程、文件操作、模块化开发以及高级特性等多个方面。 1. **基础概念**:NodeJS的核心概念包括单线程模型、事件循环和回调函数。单线程意味着所有操作都在同一执行...

    03CommonJs 和 Nodejs 模块1

    而文件模块则是用户自己编写的,需要在运行时动态加载,因此速度相对较慢,但灵活性更高。 CommonJS 规定了模块的创建和使用方式。在 Node.js 中,你可以将共享功能抽取到单独的 JavaScript 文件中,形成一个模块。...

Global site tag (gtag.js) - Google Analytics