[英]Overwrite or Overload a node_module name path
假設我安裝了一個名為magicalModule
的 node_module,並且我已經通過npm i magicalModule
安裝了它。
我通過const magic = require('magicalModule')
將它導入到我的代碼中。
有沒有辦法讓我覆蓋該特定路徑,以便我可以使用自己的模塊?
例如,我想使用該模塊的修改版本,而不是安裝的 package。 也許在 package.json 或類似的東西中放置一些東西:
dependencies:{
Alias:{
'magicalModule': process.env.local ? './myPath' : 'magicalModule'
}
}
像上面這樣...
我知道有一個名為Module-alias的模塊,但我不確定它是否適合我的用例。
As to why I would need to do something like this is because there is an NPM package that is used alot in multiple files and I want to replace it with another NPM package that I'm currently developing. 想在發布之前在本地測試它 NPM package ...
如果您需要動態導入,則將 require 置於 if 條件中
let myModule = require(process.env.local ? './myPath' : 'myModule'); // make sure there is index.js inside
您不能在 package.json中執行此操作,因為該文件是 static。 但是,如果您可以以某種方式編輯 package json 則可以添加本地依賴項,例如
"dependencies": {
"bar": "file:./myPath" // package.json is read inside of ./myPath
}
是的,經過一番修補,解決方案畢竟是使用模塊別名。 在我的主文件中,我在任何代碼之前添加到它的頂部:
if(process.env.useLocal) require('module-alias/register')
然后在我的 package.json 文件中添加:
"_moduleAliases": { "magicalModule" : "path_to_file" }
在我的依賴項部分之后,它會覆蓋 node_modules 的路徑,而我的項目將使用我的本地模塊。
希望這可以幫助其他需要做與我類似的事情的人。
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.