【问题标题】:npm run script < was unexpectednpm 运行脚本 < 出乎意料
【发布时间】:2019-08-12 10:05:01
【问题描述】:

我最近阅读了一篇关于生成变更日志的article,我想将它集成到 package.json 脚本中。

我用正确的项目名称稍微更改了文章中的脚本并将输出导出到 CHANGELOG.md

 "scripts": {
    "generateChangelog": "git log --pretty=format:'<li> <a href=\"http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H\">view commit &bull;</a> %s</li> ' --reverse > CHANGELOG.md"
 },

但是当我运行它时出现以下错误:

< was unexpected at this time.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! temporary-test-project@1.0.0 generateChangelog: `git log --pretty=format:'<li> <a href="http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H">view commit &bull;</a> %s</li> ' --reverse > CHANGELOG.md`
npm ERR! Exit status 1

我认为它与转义有关,但我找不到。

很高兴得到一些帮助。在此先感谢


编辑

我在 Windows 上工作,默认情况下,我使用的是 Powershell,但我也尝试使用 cmd 运行 npm run generateChangelog 脚本(均失败)

但是,如果我直接在 shell 中运行相同的 git log... 命令,它会起作用:

git log --pretty=format:'<li> <a href=\"http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H\">view commit &bull;</a> %s</li> ' --reverse > CHANGELOG.md`

【问题讨论】:

  • 你试过这样用吗? git log --pretty=format:'&lt;li&gt; &lt;a href="http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H"&gt;view commit &amp;bull;&lt;/a&gt; %s&lt;/li&gt; ' --reverse &gt; CHANGELOG.md
  • @GillesHeinesch 第一次复制它,但我认为它肯定不是一个有效的 JSON,或者至少我的编辑以这种方式用红色突出显示它
  • 您是否尝试使用我评论中的代码?
  • @GillesHeinesch 是的,但它会引发不同的异常 npm ERR!代码 EJSONPARSE npm 错误! JSON.parse 解析 json 失败

标签: javascript npm escaping package.json npm-scripts


【解决方案1】:

我认为它与转义有关,但我找不到。

是的,你是对的,这是一个逃避问题。

package.jsonscripts 部分中名为 generateChangelog 的脚本更改为以下内容:

"scripts": {
  "generateChangelog": "git log --pretty=format:\"<li> <a href=\\\"http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H\\\">view commit &bull;</a> %s</li> \" --reverse > CHANGELOG.md"
},

注意变化:

  • 单引号 (') 已替换为 JSON 转义双引号 (\")

  • JSON 转义双引号 (\") 已替换为 (\\\")

git log --pretty=format:\"<li> <a href=\\\"http://git.egt-interactive.com/frontend-games/temporary-test-project/commit/%H\\\">view commit &bull;</a> %s</li>\" --reverse > CHANGELOG.md
                        ^^             ^^^^                                                                              ^^^^                               ^^

运行 $ npm run generateChangelog 现在应该通过以下方式成功运行:

  • Windows Powershell
  • Windows 命令提示符 (cmd.exe)
  • Windows Git Bash
  • *Nix 命令行工具

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2015-03-01
    • 2014-09-11
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多