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