Jul*_*oux 6 development-environment environment-variables node.js reactjs package.json
如何将脚本添加到我的package.json文件中,以允许我动态使用本地文件而不是基于环境变量的包版本?
"dependencies": {
"dynamic-dependency": "$(process.env.NODE_ENV !== 'dev' ? '^1.0.7' : 'file:../local-path-to-package')"
}
Run Code Online (Sandbox Code Playgroud)
您不能在 package.json 中执行此操作,它是不可执行的 JSON 文件。package.json 中使用的 JSON 变体甚至不支持注释:)。package.json 的目的是指定将哪些依赖项安装到 中node_modules,仅此而已。安装这些依赖项后,Node 在运行时可以使用它们,Node 使用模块解析算法来定位它们:
如果传递给 require() 的模块标识符不是核心模块,并且不以“/”、“../”或“./”开头,则 Node.js 将从当前模块的父目录启动,并添加 /node_modules,并尝试从该位置加载模块。Node.js 不会将 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'),
},
},
};
Run Code Online (Sandbox Code Playgroud)
我没有使用过其他 JS 捆绑器,但我认为 Parcel/Rollup 等也支持这种配置。
| 归档时间: |
|
| 查看次数: |
4771 次 |
| 最近记录: |