Yarn 脚本产生的输出与直接运行命令不同
Posted
技术标签:
【中文标题】Yarn 脚本产生的输出与直接运行命令不同【英文标题】:Yarn script produces different output than running command directly 【发布时间】:2020-02-07 11:31:40 【问题描述】:我在package.json
中定义了一个脚本:
"scripts":
"prettierCheck": "./node_modules/.bin/prettier --check ./app/javascript/**/*.js"
如果我使用yarn run prettierCheck
运行此脚本,Prettier 不会发现我的文件有任何格式问题。但是,如果我直接运行 Prettier 命令,它会发现违规文件。
yarn run prettierCheck
的输出:
~/Projects/tome $ yarn run prettierCheck
yarn run v1.19.0
$ ./node_modules/.bin/prettier --check ./app/javascript/**/*.js
Checking formatting...
All matched files use Prettier code style!
Done in 0.20s
./node_modules/.bin/prettier --check ./app/javascript/**/*.js
的输出:
~/Projects/tome $ ./node_modules/.bin/prettier --check ./app/javascript/**/*.js
Checking formatting...
... several files listed here ...
Code style issues found in the above file(s). Forgot to run Prettier?
为什么会这样?直接运行命令与通过 Yarn 脚本运行有什么区别?
【问题讨论】:
你用什么命令直接检查? @AnshuKumar 和prettierCheck
脚本一模一样,只是在提示符下直接执行。
你能把两次执行的输出都包括进来吗?纱线是否有可能认为它正在从不同的目录执行,因此找不到传入的文件?如果您从命令中删除 ./node_modules/.bin/
前缀(这是多余的),会有什么变化吗?
@Soc 是否删除前缀没有区别。用两次运行的输出更新了我的问题。
【参考方案1】:
我遇到了同样的问题,或者至少我认为我遇到了同样的问题。我尝试了一些方法,例如在我的命令中为文件/目录/glob 添加引号,更改我的路径/glob 并开始为我工作,因为现在我可以看到一些有用的输出。试试这些,也许它也适合你们。
这就是prettier CLI documentation 对路径和文件/目录/globs 的看法。
不要忘记全局的引号!引号确保 更漂亮的 CLI 扩展 glob 而不是你的 shell,这是 对跨平台使用很重要。
所以在你的脚本中尝试这样的事情(注意: -c 是 --check 的缩写)
scripts":
"pretty-check": "prettier -c 'src/**/*.ts'",
注意'src/**/*.ts'
周围的引号
我不确定这是否适用于所有人,但我希望它对我有用。
如果您想知道 什么是文件/目录/glob 基本上就是您为文件定义正则表达式的部分,例如 'src/**/*.ts'
部分在命令prettier -c 'src/**/*.ts'
【讨论】:
以上是关于Yarn 脚本产生的输出与直接运行命令不同的主要内容,如果未能解决你的问题,请参考以下文章
screen工具(虚拟终端)nohup命令(让脚本后台运行)
用putty或secureCRT通过SSH到linux后,直接关闭putty(securCRT)与通过输出exit命令退出,两者有何不同?