单引号在 package.json 中不起作用

Posted

技术标签:

【中文标题】单引号在 package.json 中不起作用【英文标题】:single quotes not working in package.json 【发布时间】:2018-06-14 17:19:06 【问题描述】:

我想让我的 package.json 能够在带有 npm 5.5.1 的 Windows 10 上使用命令 npm run test-watch 运行。在我的 package.json 中:

  "scripts": 
    "test": "mocha server/**/*.test.js",
    "test-watch": "nodemon --exec 'npm test'"
  

但是,我奇怪地将代码解释为其中有一个单引号。我实际上正在学习 Udemy 课程,因此它似乎对讲师有用。但是,这是我得到的输出:

PS D:\courses\node-course\node-todo-api> npm run test-watch

> todo-api@1.0.0 test-watch D:\courses\node-course\node-todo-api
> nodemon --exec 'npm test'

[nodemon] 1.14.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `'npm test'`
''npm' is not recognized as an internal or external command,
operable program or batch file.
[nodemon] app crashed - waiting for file changes before starting...

我需要进行哪些更改才能使其正常工作?它似乎保留了字符串上的引号。我似乎无法绕过它。当我直接运行命令时,它可以工作:

PS D:\courses\node-course\node-todo-api> nodemon --exec 'npm test'
[nodemon] 1.12.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `npm test`

> todo-api@1.0.0 test D:\courses\node-course\node-todo-api
> mocha server/**/*.test.js



started on port 3000
  Post /todos
    √ should create a new todo (50ms)


  1 passing (1s)

【问题讨论】:

【参考方案1】:

不幸的是,在使用 npm 时,操作系统和 shell 可能会让人头疼。有些东西在一台计算机上运行,​​有些在另一台计算机上运行。

这些都应该在 Windows 10 上运行:

"test-watch": "nodemon --exec \"npm test\""
"test-watch": "nodemon --exec npm test"

【讨论】:

谢谢...真不敢相信我想不出那个大声笑,因为它是如此简单... 无论使用什么系统和外壳,有没有办法让命令正常工作? @cjsimon 我认为不使用单引号是让它在 *nix 和 Windows 上工作的方法。采用 ””。根据this 页面,使用三个反斜杠可能是最好的选择(出于某种原因)。

以上是关于单引号在 package.json 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

动态变量在php中不起作用

ESLint 在 VS Code 中不起作用?

自定义字体在 React Native 中不起作用

VSCode 自动完成和 IntelliSense 在反引号中不起作用

在 JDBC 中为 SQL Query 插入单引号不起作用

IBM APIConnect:单引号字符串不起作用