npm_npmscript_webpack_node應用

weixin_33912246發表於2017-02-17

題目1: 如何全域性安裝一個 node 應用?

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm,是全球最大的開源庫生態系統。
可以讓js在服務端執行的工具
npm install -g xxx 命令會全域性安裝一個命令

題目2: package.json 有什麼作用?

package.json必須是一個嚴格的json檔案,而不僅僅是js裡邊的一個物件。其中很多屬性可以通過npm-config來生成。配置好依賴後,別人在使用程式碼時可以npm install直接安裝依賴,方便快捷,減少程式碼體積。
name
name屬性就是你的模組名稱,下面是一些命名規則:
name必須小於等於214個位元組,包括字首名稱在內(如 xxx/xxxmodule)。
name不能以""或"."開頭
不能含有大寫字母
name會成為url的一部分,不能含有url非法字元下面是官網文件的一些建議:
不要使用和node核心模組一樣的名稱
name中不要含有"js"和"node"。 It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
name屬性會成為模組url、命令列中的一個引數或者一個資料夾名稱,任何非url安全的字元在name中都不能使用,也不能以"
"或"."開頭
name屬性也許會被寫在require()的引數中,所以最好取個簡短而語義化的值。
建立一個模組前可以先到後邊的網址查查name是否已經被佔用. https://www.npmjs.com/
version
version必須可以被npm依賴的一個node-semver模組解析。具體規則見下面的dependencies模組
description
一個描述,方便別人瞭解你的模組作用,搜尋的時候也有用。
keywords
一個字串陣列,方便別人搜尋到本模組
homepage
專案主頁url
注意: 這個專案主頁url和url屬性不同,如果你填寫了url屬性,npm註冊工具會認為你把專案釋出到其他地方了,獲取模組的時候不會從npm官方倉庫獲取,而是會重定向到url屬性配置的地址。
bugs
可選欄位,問題追蹤系統的URL或郵箱地址;npm bugs用的上。

{ "url" :"http://github.com/owner/project/issues",
 "email" :"project@hostname.com"
}

license
你應該為你的模組制定一個協議,讓使用者知道他們有何許可權來使用你的模組,以及使用該模組有哪些限制。最簡單的,例如你用BSD-3-Clause 或 MIT之類的協議,如下:{ "license" : "BSD-3-Clause" }你可以在https://spdx.org/licenses/這個地址查閱協議列表 。
author, contributors
author是一個人,contributors是一組人。

Author的格式如下:

{ "name" : "Barney Rubble",
 "email" : "b@rubble.com",
 "url" : "http://barnyrubble.tumblr.com/"
}

這種格式也可以:
"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
files
專案包含的一組檔案。如果是資料夾,資料夾下的檔案也會被包含。如果需要把某些檔案不包含在專案中,新增一個”.npmignore”檔案。這個檔案和”gitignore”類似。
main
這個欄位的值是你程式主入口模組的ID。如果其他使用者需要你的包,當使用者呼叫require()方法時,返回的就是這個模組的匯出(exports)。
bin
很多的包都會有執行檔案需要安裝到PATH中去。
這個欄位對應的是一個Map,每個元素對應一個{ 命令名:檔名 }。
{ "bin" : { "npm" : "./cli.js" } }
script
scripts屬性是一個物件,裡邊指定了專案的生命週期個各個環節需要執行的命令。key是生命週期中的事件,value是要執行的命令。具體的內容有 install start stop 等,詳見https://docs.npmjs.com/misc/scripts
dependencies
dependencies屬性是一個物件,配置模組依賴的模組列表,key是模組名稱,value是版本範圍,版本範圍是一個字元,可以被一個或多個空格分割。dependencies也可以被指定為一個git地址或者一個壓縮包地址。不要把測試工具或transpilers寫到dependencies中。

version 精確匹配版本
>version 必須大於某個版本
>=version 大於等於
<version 小於
<=versionversion 小於
~version "約等於",具體規則詳見semver文件
^version "相容版本"具體規則詳見semver文件
1.2.x 僅一點二點幾的版本
[http://](http:)... 見下面url作為denpendencies的說明
任何版本
"" 空字元,和*相同
version1 - version2 相當於 >=version1 <=version2.
range1 || range2 範圍1和範圍2滿足任意一個都行

題目3: npm install --save app 與 npm install --save-dev app有什麼區別?

  • -save和save-dev可以省掉你手動修改package.json檔案的步驟。
  • npm install -save module-name自動把模組和版本號新增到dependencies部分,產品釋出時依賴模組。
  • npm install -save-dev module-name自動把模組和版本號新增到devdependencies部分,開發過程中依賴模組。

題目4: nodule_modules的查詢路徑是怎樣的?
從本地檔案開始一直往上查詢至系統根目錄
所以全域性安裝到根目錄後才可以在任何檔案目錄下使用命令。

題目6: 使用 webpack 替換 入門-任務15中模組化使用的 requriejs
效果
程式碼地址

相關文章