[英]Preventing global installations of an NPM package
我有一個庫,並希望鼓勵/強制用戶只使用本地安裝的版本。 我可以用艱難的方式或簡單的方式做到這一點。
簡單的方法是,如果NPM有一個機制來阻止對任何庫使用帶有npm install命令的--global
開關。
如果代碼確定它是全局安裝的,而不是在本地安裝,那么很難在我的NPM打包中添加早期返回的代碼。
有誰知道你是否可以阻止全球安裝NPM包? 什么可能是最友好的方式來解決這個問題?
阻止用戶全局安裝模塊的最佳方法是在文檔中描述您的偏好 。
沒有什么可以做,以強制用戶從來沒有在全球安裝它,如果他們可以在本地進行安裝。 如果需要,他們將始終能夠手動移動文件。
在npm
社區中,假設用戶可以控制他/她使用的模塊 , 而不是相反 。 強迫人們以某種方式使用你的模塊只會讓他們不高興。
因此,對您的問題唯一的好答案是記錄您的代碼的使用方式。 您可以要求他們以某種方式使用您的模塊 - 但他們可以選擇是否傾聽您的意見。 您可以聲明使用全局安裝的模塊不受支持,不明智,不鼓勵,危險,但您無法強制用戶根據需要使用該模塊,這是一件好事。
現在,對於一些不好的答案 ,您可以隨時測試模塊的根目錄的父目錄是否名為node_modules
,如果不是,則會失敗但是我確定如果有人碰巧在本地安裝模塊會導致某些問題你想要但在不同的目錄下。 您可以查看模塊是否從節點用於搜索模塊的其中一個默認路徑運行,但這些路徑並不總是相同,並且您還必須考慮NODE_PATH
環境變量。
你可以做一些這樣的技巧,但他們只會惹惱那些知道自己在做什么的用戶,因為他們必須改變模塊的源代碼才能做他們想做的事情,無論怎么樣,他們總能做到這一點。很難你努力讓自己的生活變得更加艱難。
總之,我的建議是很好地記錄您的模塊並尊重您的用戶和他們的需求,並相信他們知道他們在做什么。
有關阻止某個模塊的全局npm
安裝的Bash函數的工作示例,請參閱此答案 - 防止全局安裝的工作示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.