【问题标题】:NPM environment variables not working in windows?NPM 环境变量在 Windows 中不起作用?
【发布时间】:2017-03-16 11:26:17
【问题描述】:

在我的 package.json 文件中,我尝试使用版本控制编译更少的代码,如下所示:

"scripts" {
...
"build:css": "lessc --source-map css/index.less build/$npm_package_name.$npm_package_version.css",
...
}

问题是输出文件返回为

$npm_package_name.$npm_package_version.css

而不是

my-project.1.0.0.css

我听说你可以做到

%npm_package_name%.%npm_package_version%.css

但这对我不起作用。

有人知道为什么这些变量不起作用吗?这些变量在 Windows 中是否有效?如果是这样,我该如何让它们发挥作用?

【问题讨论】:

  • 有什么问题?
  • 为什么变量不起作用/变量在 Windows 中起作用/如何使它们起作用?在问题中更新
  • 我认为最好使用gulp 并使用process.env 获取环境变量,而不是在package.json 上使用依赖于操作系统的脚本
  • 是的,通常我做的是使用 Grunt,但是对于这个项目我特别需要使用 npm。如果这个问题有解决方案那就太好了。
  • %variable% 格式是正确的如果您使用 cmd.exe 作为 shell。使用时会发生什么?

标签: javascript json node.js windows npm


【解决方案1】:

要使其跨平台,请使用cross-var:

"scripts" { ... "build:css": "cross-var lessc --source-map css/index.less build/$npm_package_name.$npm_package_version.css", ... }

【讨论】:

    【解决方案2】:

    这个 package.json 在 Windows 10 上适用于我:

    {
      "name": "x",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "Unlicense"
    }
    

    但请注意,环境变量替换发生在 NPM 回显之后,因此输出如下所示:

    C:\try\x>npm test
    
    > x@1.0.0 test C:\try\x
    > echo %npm_package_name%.%npm_package_version%.css
    
    x.1.0.0.css
    

    【讨论】:

    • 啊,是的,非常有帮助。问题是我使用的是 git bash(基于 unix)而不是 cmd.exe。干杯!
    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多