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>
能夠撤銷發佈本身發佈過的某個版本代碼。