瞭解npm的檔案結構(npm-folders)和配置檔案(npm-mrc)
一、npm的檔案結構
npm的安裝:
本地安裝
-
- 1. 將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。
- 2. 可以通過 require() 來引入本地安裝的包。
全域性安裝
-
- 1. 將安裝包放在 /usr/local 下或者你 node 的安裝目錄。
- 2. 可以直接在命令列裡使用。
如果你希望具備兩者功能,則需要在兩個地方安裝它或使用 npm link。
node目錄:
安裝目錄預設為安裝目錄。
在windows中,預設node目錄:/ usr / local。
在Unix系統中,一般安裝在{node目錄} / bin /目錄下而不是{安裝目錄} / node.exe目錄下。
全域性安裝目錄:
若設定了node目錄,就安裝到node目錄下,
若沒設定node目錄則安裝到當前路徑目錄下
Node_modules:
在本地包在node_modules目錄下可以按package名稱進行載入主要模組,或按package名稱/lib/path/to/sub/module目錄載入其他模組。
全域性Node_modules:
在Unix系統中{node目錄} / lib / node_modules。
在Windows中{node目錄} / node_modules(即沒有lib資料夾。
包的作用域:node_modules資料夾的子資料夾名與@包有相關作用域。
例如npm install @myorg/package將包放到/node_modules/@myorg/package目錄下能看到所有範圍的細節。
如果需要引入對應的包可以使用require() 引入到本地專案中。
可執行檔案:
全域性:Unix / bin在目錄下引用可執行檔案,或在Windows的目錄下引用可執行檔案。
本地:在/ node_modules /目錄下引用可執行檔案。可以通過npm指令碼執行。
手冊頁:
全域性:在{prefix}/share/man目錄下.
本地或windows不安裝npm手冊頁。
快取:
檢視命令:npm-cache(1),引數由快取配置引數配置
快取存放目錄:在Posix npm的快取檔案儲存在~ /。,或者在Windows~ / npm-cache。
臨時檔案:
臨時檔案預設儲存在指定的資料夾中tmp配置,它的檔案格式預設為TMPDIR,tmp,
臨時環境變數:在Unix中為/ tmp。
在windows中為c:\ windows \ TEMP。
為每個執行程式目錄下分配一個臨時檔案進行程式的記錄相關臨時資訊。如程式的程式的執行、執行成功、執行錯誤、結束。
更多資訊:
npm在本地首先會嘗試找到當前目錄下的根目錄尋找[email protected]包。作用cd命令也能到相關目錄。
npm將會從package.json檔案或node_modules目錄查詢包。使用npm命令進行查詢包或模組則被視為有效。(這種行為類似於git,使用git-folder進行執行工作目錄。)
如果沒有找到包的根目錄,則使用當前資料夾。當您執行npm install [email protected]
,然後載入到包 快取,然後開啟./node_modules/foo
。 然後,任何 foo的依賴性也同樣開啟./node_modules/foo/node_modules/...
。
在/ node_modules / bin目錄檔案中被依賴。所以必要時通過npm指令碼來查詢他們。
全球安裝:如果全域性配置被設定為true,那麼npm將安裝“globally”包。全域性安裝方式大致相同,但需使用上述"globally"目錄。
生命週期:
系統模組迴圈使用模組時會在不同的階段查詢node_modules目錄,如果一個包存在node_modules目錄的根目錄上,則不會出現在當前位置。
考慮上面的例子,如果在foo -> bar -> barz之外,由於barz依賴於bar,你會想目錄結構應是:foo -> bar -> baz -> bar -> baz ...,然而目錄結構卻是:foo/node_modules/bar/node_modules/barz,因為barz依賴於bar,你的目錄結構要是:foo -> bar -> baz -> bar -> baz,當它呼叫("bar"),它會獲得這個副本並代替foo/n ode_modules/bar。
僅當在多個巢狀node_modules目錄中安裝完全相同的版本時,才使用此快捷方式。 如果兩個“a”包是不同的版本,仍然存在a/ node_modules / b / node_modules / a目錄。 然而沒有多次重複完全相同的包,將總是防止無限迴歸。另一個優化可以通過在本地化的“目標”資料夾下安裝最高級別的依賴項。另一個優化可以通過安裝依賴在最高的層次上,在區域性“目標”資料夾中。
例如:以下這個依賴圖:
在這種情況下,我們可能希望這樣的資料夾結構:
因為foo直接取決於[email protected]和[email protected],它們安裝在foo的node_modules資料夾中。即使blerg的最新副本是1.3.7,foo對版本1.2.5有特定的依賴。
所以,安裝在[A]。 由於父安裝blerg滿足bar對[email protected]的依賴,它不會在[B]下安裝另一個副本。Bar [B]也依賴於baz和asdf,所以這些都安裝在bar的node_modules資料夾中。
因為它取決於[email protected],它不能重複使用安裝在父節點node_modules資料夾[D]中的[email protected],並且必須安裝自己的副本[C]。
在bar下面,baz - > quux - > bar依賴建立一個迴圈。 然而,因為bar已經在quux的祖先[B],它不解壓縮另一個bar副本到該資料夾。
在foo - > baz [D]下,quux的[E]資料夾樹是空的,因為它對bar的依賴關係由安裝在[B]的父資料夾副本滿足。
可以使用npm ls檢視依賴樹的結構。
專案釋出:
在釋出npm node_modules資料夾中。如果任何物品沒有bundledDependencies陣列中,然後他們將不會包含在包tarball。允許維護人員在本地(dev依賴性)使用這個包來安裝所有的依賴關係,但只有結集於那些無法找到其他地方的專案。
二、npm的配置檔案
描述:npm從命令列,環境變數和npmrc檔案獲取其配置設定。npm config命令可用於更新和編輯使用者和全域性npmrc檔案的內容。
配置檔案介紹:
專案配置檔案(/path/to/my/project/.npmrc)
使用者配置檔案(〜/ .npmrc)
全域性配置檔案($ PREFIX / etc / npmrc)
npm內建配置檔案(/ path / to / npm / npmrc)
所有npm配置檔案都是key = value引數的格式化列表。 環境變數可以使用$ {VARIABLE_NAME}替換。 例如:
prefix = ${HOME}/.npm-packages
載入這些檔案中的每一個配置選項,並按優先順序順序解析。 例如,userconfig檔案中的設定將覆蓋globalconfig檔案中的設定。
通過在鍵名稱後面新增“[]”來指定陣列值。 例如:
key[] = "first value"
key[] = "second value"
注意:由於本地(每個專案或每個使用者).npmrc檔案可以包含敏感憑據,它們必須只能由您的使用者帳戶讀取和寫入(即必須具有0600的模式),否則將被npm忽略!
專案配置檔案:
當在專案中本地工作時,專案根目錄中的.npmrc檔案(即node_modules和package.json的兄弟節點)將設定特定於此專案的配置值。
請注意,這僅適用於您執行npm的專案的根。它在您的模組釋出時沒有任何效果。 例如,您不能釋出強制自己在全域性或其他位置安裝的模組。
此外,此檔案不是在全域性模式下讀取,例如當執行npm install -g時。
使用者配置檔案:$HOME/.npmrc
(或userconfig
引數,如果設定環境 或在命令列上)
全域性配置檔案:$ PREFIX / etc / npmrc(或globalconfig引數,如果設定如上):該檔案是key = value引數的ini檔案格式化列表。 環境變數可以如上替換。
內建配置檔案:path / to / npm / itself / npmrc 這是一個不可更改的“內建”配置檔案,npm在更新中保持一致。 使用npm附帶的./configure指令碼在此處設定欄位。 這主要用於分發維護者以標準和一致的方式重寫預設配置。
相關推薦
瞭解npm的檔案結構(npm-folders)和配置檔案(npm-mrc)
一、npm的檔案結構 npm的安裝: 本地安裝 1. 將安裝包放在 ./node_modules 下(執行 npm 命令時所在的目錄),如果沒有 node_modules 目錄,會在當前執行 npm 命令的目錄下生成 node_modules 目錄。 2. 可以通過 require() 來引
初始MyBatis框架(四大核心元件和配置檔案)
一、概述 MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。 MyBatis 是一款優秀的持久層框
初識MyBatis框架(四大核心元件和配置檔案)
一、概述 MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。 MyBatis 是
幹貨分享微服務spring-cloud(8.服務治理和配置中心Spring-cloud-zooke)
not found span zookeepe service get() eight request wire autowired 8.1. 服務治理Spring-cloud-zookeeper提供的模式包括服務發現和配置,配置動態更新不需要手動請求/refresh
FFmpeg源代碼簡單分析:常見結構體的初始化和銷毀(AVFormatContext,AVFrame等)
new init _array border 代碼 alloc ecc .com VC 結構體 初始化 銷毀 AVFormatContext avformat_alloc_context() avfo
三大框架(ssh)學習——配置檔案詳解(一)
配置檔案詳解 指定web應用預設字符集 <constant name="struts.i18n.encoding" value="gbk" /> 此配置相當於: request.setCharacterEncoding(“gbk”); r
三大框架(ssh)學習——配置檔案詳解(二)
多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str
SpringMVC 學習 九 SSM環境搭建 (二) Spring配置檔案的編寫
spring配置檔案中需要乾的事情 (一)開啟 Service與pojo包的註解掃描 注意:spring 掃描與表對應的實體類,以及service層的類,不能用來掃描Controller層的類,因為Controller層的類需要由SpringMVC容器來管理,如果採用了Spring容器管理,就
資料庫之redis篇(2)—— redis配置檔案,常用命令,效能測試工具
redis配置 如果你是找網上的其他教程來完成以上操作的話,相信你見過有的啟動命令是這樣的: 啟動命令帶了這個引數:redis.windows.conf,由於我測試環境是windows平臺,所以是這個,有的是redis.conf。顧名思義,redis.conf就是配置檔案,然後啟動時加
eclipse mavenWeb專案真正實現熱部署(修改java程式碼和頁面檔案不用重啟tomcat)
1.前言 先說熱部署的含義: 熱部署原來被定義為:tomcat啟動後,如果你往webapps目錄下,新增新的專案,tomcat會實現自動將其釋出的功能,這時,就叫做熱部署。 網上所實現的熱部署
SpringBoot開發詳解(三)--SpringBoot配置檔案YML注意事項
轉載自:https://blog.csdn.net/qq_31001665/article/details/70197543#commentBox 一、多重層級讀取 在YML中我們再新增一個ZZP2的配置資訊,其中包含了girl節點以及girl下的name,age屬性。 zzp2:
結構體、共用體和列舉型別(一)
定義描述三維座標點(x,y,z)的結構體型別變數,完成座標點的輸入和輸出,並求出兩點之間的距離 程式碼如下: #include <iostream> #include <cmath> #define N 2 using namespace std; stru
Spring Boot 初級入門教程(六) —— 新增配置檔案 *.properties 及常用配置的使用(附原始碼)
Spring Boot 使用了一個全域性的配置檔案 application.properties,放在 src/main/resources 目錄下或者類路徑的 /config 下。Sping Boot的全域性配置檔案的作用是對一些預設配置的配置值進行修改。 一、新增 applic
mybatis原始碼-解析配置檔案(三)之配置檔案Configuration解析(超詳細, 值得收藏)
1. 簡介 1.1 系列內容 本系列文章講解的是mybatis解析配置檔案內部的邏輯, 即 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFact
差異檔案(diff)和補丁檔案(patch)簡介
如果你曾有機會在一個使用分散式開發模型的大型程式碼庫上工作過,你就應該聽說過類似下面的話,“Sue 剛發過來一個補丁patch”,“Rajiv 正在簽出checking out差異diff”, 可能這些詞(補丁、差異檔案)對你而言很陌生,而你確定很想搞懂他們到底指
微服務 SpringBoot 2.0(二):配置檔案解析
properties我用了好多年,你卻讓我用yml,這是什麼鬼 —— Java面試必修 引言 上一篇介紹了Spring Boot的輕鬆入門專案構建,對Spring Boot的特性有了初步瞭解。但如果要想玩得很熟練的話就請看接下來的文章,這樣有助於後續我們快速
淺探微服務—springboot(3):配置檔案application.properties
先附上springboot官方文件:springboot官方指南,內容很廣泛,全英文,可以翻譯網頁檢視,慢慢看。。。 預設建立spring-boot專案後,會在resources目錄下生成一個空的application.properties配置檔案,springboot啟動
kafka(06)——kafka配置檔案的說明
server.properties的配置說明 #broker的全域性唯一編號,不能重複 broker.id=0 #用來監聽連結的埠,producer或consumer將在此埠建立連線 port=9092 #處理網路請求的執行緒數量 num.network.t
mybatis原始碼-解析配置檔案(四)之配置檔案Mapper解析
其中, mappers作為configuration節點的一部分配置, 在本文章中, 我們講解解析mappers節點, 即 xxxMapper.xml 檔案的解析。 1 解析入口 在解析 mybatis-config.xml 時, 會進行解析 xxxMapper.xml 的檔案。 在圖示流程的 XMLCo
mybatis原始碼-解析配置檔案(四-1)之配置檔案Mapper解析(cache)
1. 簡介 本文章主要講解的是, xxxMapper.xml 檔案中, cache 節點的原始碼。 2. 解析 XMLMapperBuilder.cacheElement() 方法主要負責解析 <cache> private void cacheElement(XNode context)