Javascript 我怎样才能跨平台制作npm笑话脚本而不让它看起来很疯狂?

Javascript 我怎样才能跨平台制作npm笑话脚本而不让它看起来很疯狂?,javascript,node.js,regex,npm,jestjs,Javascript,Node.js,Regex,Npm,Jestjs,我正在处理的项目有一个运行Jest单元测试的npm脚本。它是在Mac电脑上写的,我正在努力使它跨平台。脚本如下所示: "node --harmony node_modules/.bin/jest src/spec/ut" 我修复的第一件事是Jest二进制文件不在Windows上运行,因此我将其更改为: "node --harmony node_modules/jest/bin/jest.js src/spec/ut" 现在至少Jest运行了,但它不喜欢src/spec/ut部分,这是test

我正在处理的项目有一个运行Jest单元测试的npm脚本。它是在Mac电脑上写的,我正在努力使它跨平台。脚本如下所示:

"node --harmony node_modules/.bin/jest src/spec/ut"
我修复的第一件事是Jest二进制文件不在Windows上运行,因此我将其更改为:

"node --harmony node_modules/jest/bin/jest.js src/spec/ut"
现在至少Jest运行了,但它不喜欢
src/spec/ut
部分,这是
testPathPattern
——即告诉它只运行
src/spec/ut
中的测试

Windows上的大多数节点命令似乎都喜欢使用*nix样式的目录分隔符,但这一个不喜欢,因为
testPathPattern
被视为正则表达式,
/
\
不同

经过一些实验后,我发现上面的Windows等价物如下所示:

"node --harmony node_modules/jest/bin/jest.js src\\\\\\\\\\\\\\\\spec\\\\\\\\\\\\\\\\ut"
(为了省去你的计算,这是16个反斜杠。我知道。)

因此,我应该能够通过以下方式实现跨平台:

"node --harmony node_modules/jest/bin/jest.js src(\\\\\\\\\\\\\\\\|/)spec(\\\\\\\\\\\\\\\\|/)ut"
(虽然我只是尝试了一下,但……这并不是作为json解析的)

但我试图在这里编写JavaScript,而不是Perl。我忍不住想,一定有一种更理智的方法来做这件事

有人能建议一种更明智的方法吗?

Jest允许您这样做。此配置可以包括(匹配测试文件的glob模式)或(匹配测试文件的regex模式),具体取决于您的需要

将测试模式移出CLI调用应该避免任何跨平台的功能。然后,您可以修改npm脚本以指向配置:

"node --harmony node_modules/jest/bin/jest.js --config=your-config.json"

我也对这个问题的答案感到好奇。如果有人想知道正确但仍然疯狂的做这件事的正确方法的话,那么,这是:<代码>节点——节点——节点——和谐节点——和谐节点——和谐节点——U模块/jest/jest/bin/bin/Jes/Jes/jest/jest/我也对这个问题的答案感到好奇。如果有人想知道任何人想知道做这件事情的正确但仍然是正确但仍然是疯狂的方法的话,那么,这是:::<代码>节点:<代码>节点——节点——节点——节点——节点——和谐节点——和谐节点——和谐节点——和谐节点——和谐节点——和谐节点——和谐节点——和谐节点——和谐节点——节点——节点——联合节点——U模块/U模块/耶稣/jest/jest/jest/jest/jest/jest/jest/jest/jest/jest/jest/jest/jest/jest/bin/bin/bin/bin/bin/bin/bin/bin/)ut \“这似乎解决了一个错误,但给了我一大堆新错误。。。设置没有按预期工作:
{“testMatch”:[“src/spec/ut/***/*.spec.js”]}
但是如果我将其更改为
{“testMatch”:[“***/src/spec/ut/***.spec.js”]}
,那么它至少会找到单元测试。不幸的是,大多数都失败了,因为它似乎不再识别ES6了。它不喜欢
import
export
语句,因此我得到了一大堆错误:
SyntaxError:Unexpected token{
Oops,我的坏,只是忘记了将
transform
参数移出
package.json