module.exports = function () { console.log('Hello World!'); };
var counter1 = require('./util/counter'); var counter2 = require('./util/counter'); //counter1和counter2是同样的
内置模块: 若是传递给require
函数的是NodeJS内置模块名称,不作路径解析,直接返回内部模块的导出对象,例如require('fs')
。node
node_modules目录: NodeJS定义了一个特殊的node_modules
目录用于存放模块。例如某个模块的绝对路径是/home/user/hello.js
,在该模块中使用require('foo/bar')
方式加载模块时,则NodeJS依次尝试使用如下路径。linux
/home/user/node_modules/foo/bar /home/node_modules/foo/bar /node_modules/foo/bar
PATH
环境变量相似,NodeJS容许经过NODE_PATH
环境变量来指定额外的模块搜索路径。NODE_PATH
环境变量中包含一到多个目录路径,路径之间在Linux下使用:分隔,在Windows下使用;分隔。例如定义了如下NODE_PATH
环境变量:NODE_PATH=/home/user/lib:/home/lib
当使用require('foo/bar')
的方式加载模块时,则NodeJS依次尝试如下路径。shell
/home/user/lib/foo/bar /home/lib/foo/bar
//node/person/index.js var head = require('./head'); var body = require('./body'); exports.create = function(name) { return { name: name, head: head.create, body: body.create } }; //node/main.js var index = require('./lib'); 这样将person当作一个包
*若是cat文件夹中package.json文件这样定义,在以前的状况,就会优先加载main指定的文件;npm
{ "name": "cat", "main": "./main" }
/home/user/bin/node-echo.js
为例)#! /usr/bin/env node
NodeJS会忽略掉位于JS模块首行的#!注释json
$ chmod +x /home/user/bin/node-echo.js
$ sudo ln -s /home/user/bin/node-echo.js /usr/local/bin/node-echo
这样处理后,就能够在任何目录下使用node-echo命令。windows
*接下来须要在该目录下新建一个名为node-echo.cmd的文件,文件内容以下:缓存
@node "C:\User\user\bin\node-echo.js" %*
- /home/user/workspace/node-echo/ # 工程目录 - bin/ # 存放命令行相关代码 node-echo + doc/ # 存放文档 - lib/ # 存放API相关代码 echo.js - node_modules/ # 存放三方包 + argv/ + tests/ # 存放测试用例 package.json # 元数据文件 README.md # 说明文件
容许用户从NPM服务器下载别人编写的三方包到本地使用: npmjs.org包名搜索服务器
容许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用: 方法与三方包相似函数
容许用户将本身编写的包或命令行程序上传到NPM服务器供别人使用: 第一次使用NPM发布代码前须要注册一个帐号。终端下运行npm adduser
,以后按照提示作便可;工具
{ "name": "node-echo", # 包名,在NPM服务器上需要保持惟一 "version": "1.0.0", # 当前版本号 "dependencies": { # 三方包依赖,须要指定包名和版本号 "argv": "0.0.2" }, "main": "./lib/echo.js", # 入口模块位置 "bin" : { "node-echo": "./bin/node-echo" # 命令行程序名和主模块位置 } }
以后,就能够在package.json所在目录下运行npm publish
发布代码。
若是只是修复bug,须要更新Z位。
若是是新增了功能,可是向下兼容,须要更新Y位。
若是有大变更,向下不兼容,须要更新X位。
在申明三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。
npm help <command>
可查看某条命令的详细帮助。
在package.json所在目录下使用npm install . -g
可先在本地安装当前命令行程序,可用于发布前的本地测试。
npm update <package>
能够把当前目录下node_modules
子目录里边的对应模块更新至最新版本。
使用npm update <package> -g
能够把全局安装的对应命令行程序更新至最新版。
使用npm cache clear
能够清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
使用npm unpublish <package>@<version>
能够撤销发布本身发布过的某个版本代码。