我可以链接 npm 配置条目吗?



使用npm config部分既简单又酷,但我遇到了一个限制:配置条目不会扩展,因此无法链接它们,甚至无法访问配置中的非配置值s.a.包版本。

样本:

{
  "name": "myproj",
  "version": "0.1.2",
  "//": "Here, '$npm_package_version' is not expanded",
  "config": {
    "target": "dist/myproj-$npm_package_version.js"
  },
  "scripts": {
    "echo": "echo $npm_package_config_target",
  }
}

这给出了:

dist/myproj-$npm_package_version.js

而不是:

dist/myproj-0.1.2.js

我能做些什么吗?像这样链接值是一个有用的功能 - 我很惊讶nom没有这样做。有理由不这样做吗?

引用:

  • 节点.js:如何为生产和暂存设置不同的变量
  • 如何使用 npm 作为构建工具

几种方法可以解决这个问题。

最简单的方法可能只是评估字符串

{
    "name": "myproj",
    "version": "0.1.2",
    "config": {
        "target": "dist/myproj-$npm_package_version.js"
    },
    "scripts": {
        "echo": "eval echo $npm_package_config_target"
    }
}

如果您对 eval 不满意,那么您可以在脚本中手动连接字符串:

{
    "name": "myproj",
    "version": "0.1.2",
    "config": {
        "target_prefix": "dist/myproj-",
        "target_suffix": ".js"
    },
    "scripts": {
        "echo": "echo $npm_package_config_target_prefix$npm_package_version$npm_package_config_target_suffix",
    }
}

或者你可以放弃使用 npms config,而是编写一个快速脚本,该脚本可以与其他脚本组合:

{
    "name": "myproj",
    "version": "0.1.2",
    "scripts": {
        "config:target": "echo dist/myproj-$npm_package_version.js",
        "echo": "echo $(npm run config:target)"
    }
}

最新更新