簡體   English   中英

覆蓋或重載 node_module 名稱路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM