我怎样才能在package.json中使用变量?

hus*_*ayt 25 node.js npm

有一个来自maven的功能我在package.json中错过了很多.在maven .pom文件中,您可以在父项目中定义变量,并在子项目的pom文件中使用它们.

在npm有类似的东西吗?我们正在构建模块化项目,我想集中定义依赖版本,并在各自的package.json文件中使用它们.

谢谢

Abh*_*ade 35

可以引用任何键,从$npm_package_每个级别开始并添加下划线.

例:

{ "name": "appname", "version": "0.0.1"}
Run Code Online (Sandbox Code Playgroud)

名称可以访问如下: $npm_package_name

  • 我猜看不到跨平台的东西了吗? (5认同)
  • 对于Windows,它应该是“%npm_package_name%”。 (2认同)

Jir*_*rik 21

您可以在package.json中拥有config对象

以下是两个带有示例的链接:

http://www.marcusoft.net/2015/08/npm-scripting-configs-and-arguments.html#npm-configuration

http://ianmcnally.me/blog/2016/2/4/variables-in-npm-scripts

  • 它允许变量仅在package.json的"script"部分中使用. (4认同)
  • 从理论上讲,这可能会回答问题,但[最好](//meta.stackoverflow.com/q/8259)在此处包含答案的基本部分,并提供链接以供参考。仅供参考,这些链接对我很有用。谢谢。 (2认同)

小智 13

我将 package.json 文件作为变量导入到我的节点项目中以获取对象结构,而不是使用 $npm_package_name。这会将其从 JSON 转换为 JS 对象

let package = require("./package.json");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Ren*_*mes 7

在Windows上,您应该使用%variable_name%。例如:

{
   "name": "app_name",
   "version": "1.0.0",
   "custom": {
      "key": "any value"
   }
}
Run Code Online (Sandbox Code Playgroud)

你可以用得到它%npm_package_name%%npm_package_version%%npm_package_custom_key%


小智 6

跨平台解决方案,适用于 Windows、Mac OS X 和 Linux:

{
    "name"   : "myapp",
    "config" : { "port" : "3000" },
    "scripts": {
        "start" : "ver && node --harmony app.js %npm_package_config_port% || node --harmony app.js $npm_package_config_port"
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

说明:

上面的“ver”命令仅存在于 Windows 上,因此“||”之前的第一部分 在Windows上执行,而“||”后面的部分 在其他平台上执行。

享受!