npm_npmscript_webpack_node應用
題目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的查詢路徑是怎樣的?
從本地檔案開始一直往上查詢至系統根目錄
所以全域性安裝到根目錄後才可以在任何檔案目錄下使用命令。
相關文章
- 微信小程式、流應用、原生應用app、輕應用微信小程式APP
- 應用
- 使用汽車應用庫構建應用
- 一文搞懂SaaS應用架構:應用服務、應用結構、應用互動設計應用架構
- [應用案例]OT應用案例之dasdig
- SAP BTP MTA 應用的應用場景
- Android應用及應用管理簡介Android
- 《反應式應用開發》之“什麼是反應式應用”
- DOCKER應用Docker
- redis應用Redis
- Canvas應用Canvas
- iptables應用
- 應用安全
- sed 應用
- goFlag應用Go
- 應用元件元件
- Web應用Web
- ArryList應用
- erlang應用
- 用 Docker 建立 serverless 應用DockerServer
- 2.3 應用程式容器中的應用程式概述
- 單頁面應用和多頁面應用
- Websphere安裝、企業部署應用 【應用案例】Web
- 應用程式無響應?如何在Mac上強制退出應用Mac
- win10應用商店應用無法安裝怎麼解決_win10應用商店應用安裝沒反應處理方法Win10
- 應用試客打造611“應用狂歡節”助力應用登頂Top1
- golang RPC 應用(1) :net/rpc的應用GolangRPC
- DataGuard之Apply Services(redo應用和SQL應用)APPSQL
- Windbg在應用層除錯漏洞時的應用除錯
- 關於騰訊應用管理中心,認領應用
- 基於應用程度的系統應用優化優化
- Google Play應用商店下架廣告遮蔽類應用Go
- 用 RoadRunner 加速 Laravel 應用Laravel
- 用VIPER構建iOS應用iOS
- 用 Jenkins 部署 PHP 應用JenkinsPHP
- 用“雲”實現SaaS應用
- Sanic 應用配置
- Compose應用