## 手把手教你創建發布第一個模塊
[TOC]
### 準備工作:
從[node官網](http://nodejs.cn/download/)或者[node中文官網](https://nodejs.org/en/download/)下載`node`,并安裝
`node`自帶`npm`,所以,你不用再單獨安裝`npm`。
### 演示電腦環境說明:
~~~
電腦系統: OSX 10.11.6 和 Win7 64位系統
node版本: v6.5.0
npm版本: v3.10.3
~~~
### 模塊的創建
1.打開命令行
2.切換工作目錄到你的開發目錄(或者其他任何能你開心的目錄)
~~~
$ cd myPath
~~~
3.創建一個文件夾`helloModule`(Tip:文件名你完全可以自定義)
~~~
$ mkdir helloModule
~~~
4.切換工作目錄到`helloModule`
~~~
$ cd helloModule
~~~
5.初始化模塊,根據提示輸入相應的模塊信息
~~~
$ npm init
~~~
信息填寫完成之后,會生成一個`package.json`文件,下面是我生成的`package.json`的內容:
~~~
{
"name": "hello_module_outsider",
"version": "1.0.0",
"description": "My first node module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"hello",
"module"
],
"author": "outsider",
"license": "ISC"
}
~~~
>Note:
這里有個問題需要特別注意,由于模塊發布的時候,要保證模塊名稱的唯一性,所以,這里,我模塊的名稱我加了個個人標簽`outsider`,保證這個模塊的名稱不會和`npm`上面已經發布的模塊重名。建議你在創建模塊的時候,加上專屬于自己的標簽,比如,你叫王老明,你的模塊名稱可以命名為`hello_module_wlm`,用拼音縮寫作為標簽。
6.創建模塊入口文件"index.js"
7.打開"index.js",編寫模塊內容,這里,我們隨便寫一行代碼
~~~
//向控制臺輸出“Hello,Module!”
$ console.log('Hello,Module!');
~~~
至此,一個簡單可發布到`npm`的模塊就創建完成了。
### 模塊的使用
前面我們已經創建了一個名為`hello_module_outsider`的模塊,本小節將以這個模塊為例,來說明如何使用一個模塊。
#### 發布模塊
1.要發布一個模塊,你必須先在[npm官網注冊](https://www.npmjs.com/)一個npm賬號。
2.打開命令行,將工作目錄切換到`hello_module_outsider`模塊的根目錄下(如果你已經在`hello_module_outsider`的根目錄下,則無需切換,Tip:包含`package.json`文件的目錄就是模塊的根目錄,這里,你只需要切換到`helloModule`文件夾下即可)
2.登錄npm賬號
`$ npm login`
根據提示一次輸入正確的npm賬號和密碼,
3.登錄成功后,就可以發布`hello_module_outsider`模塊了
`$ npm publish `
如果發布成功,命令行會返回類似下面的語句
~~~
$ + hello_module_outsider@1.0.0
~~~
命令行返回的結果表示——你已經在npm上發布了一個名為` hello_module_outsider`的模塊,這個模塊的版本號是`1.0.0`。
>Tips:
返回結果的格式是:`module_name@version`(即模塊名稱@版本號),
1.如果你發布的模塊的名稱是`hello_module_wlm`,那返回的結果就應該是`hello_module_wlm@1.0.0`,
2.這里的版本號也由你在`package.json`文件中定義的`version`字段決定的。一般,第一個,發布的版本定為`1.0.0`,以后,每次更新一個版本,版本號應做相應的疊加,版本號定義原則,請自行查閱。
OK,你的第一個`node`模塊發布成功了!有沒有點小激動?現在,你可以在`npm`官網搜索到你發布的模塊了,其他開發者也可以搜索到你發布的模塊了,趕快上npm官網搜索一下吧!
>Tips:
強烈建議在`package.json`中設置`keyword`關鍵字,這能提升你發布的模塊被其他開發者搜索到的概率。
#### 不發布模塊,本地使用
考慮一個場景,你開發了一個`node`模塊,但是,由于種種原因(比如涉及公司保密信息或者單純是因為網絡原因),這個模塊只能在自己的電腦上或者公司內部使用,不能發布,那么,這個時候,你就需要用到`npm link`命令了(具體用法請查看[npm常用命令](npm常用命令.md)中關于`npm link`的描述)