簡體   English   中英

如何根據環境變量動態導入package.json依賴?

[英]How to dynamically import package.json dependencies based on environment variables?

如何將腳本添加到我的package.json文件中,以允許我根據環境變量動態使用本地文件而不是 package 版本?

"dependencies": {
  "dynamic-dependency": "$(process.env.NODE_ENV !== 'dev' ? '^1.0.7' : 'file:../local-path-to-package')"
}

您不能在 package.json 中執行此操作,這是不可執行的 JSON 文件。 package.json 中使用的 JSON 變體甚至不支持評論:)。 package.json 的目的是指定將哪些依賴項安裝到node_modules中,僅此而已。 安裝這些依賴項后,Node 可以在運行時使用它們,Node 使用模塊解析算法定位它們:

如果傳遞給 require() 的模塊標識符不是核心模塊,並且不以'/'、'../'或'./'開頭,則 Node.js 從當前模塊的父目錄開始,並添加/node_modules,並嘗試從該位置加載模塊。 Node.js 不會 append node_modules 到已經以 node_modules 結尾的路徑。

所以你不能為此使用 NPM/package.json 。 但是,我看到你用 React 標記了你的問題,所以如果你使用 Webpack,你可以在你的 Webpack 配置中解決這個問題。 這可以通過resolve.alias來完成:

const path = require('path');

module.exports = {
  //...
  resolve: {
    alias: {
      'dynamic-dependency': process.env.NODE_ENV !== 'dev' ? 'dynamic-dependency' : path.resolve(__dirname, '../local-path-to-package'),
    },
  },
};

我沒有使用其他 JS 捆綁器,但我不得不認為 Parcel/Rollup 等也支持這種配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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