babel-istanbul 覆盖从报告中排除文件但继续转译
babel-istanbul cover exclude file from report but keep to transpile
我的目标是能够在 es6 中编写 src 和测试文件,都在同一个目录中(我希望我的测试文件与我的源文件并排),并获得覆盖率报告原始文件。
此时我能想到的最好办法是使用以下命令将我的测试文件包含在覆盖率报告中:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover \
node_modules/.bin/_mocha -- 'src/**/*.spec.*.js'
我确实尝试使用 cover -x 'src/**/*.spec.*.js'
,它还排除了转译文件,然后 mocha
无法 运行 测试。对于我的一生,我无法弄清楚如何做类似这样的事情:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover -x 'src/**/*.spec.*.js' \
node_modules/.bin/_mocha -- --require babel-core/register 'src/**/*.spec.*.js'
这将 运行 我所有的测试都正常,但会给我带来负面影响:
No coverage information was collected, exit without writing coverage information
所以我离我想要的不远,我想我只是错过了最后一段,如果有人能在这里提供帮助,我将不胜感激。
此致,
D.
从来没有 -x
选项来做我想做的事。如果您不介意使用 .istanbul.yml
文件,这对我有用,可以从覆盖率报告中排除并排测试...
npm run cover
命令:
babel-node node_modules/.bin/babel-istanbul cover _mocha -- --opts mocha.opts
project_dir/mocha.opts
文件:
src/**/*.test.js
--compilers js:babel-register
--require babel-polyfill
project_dir/.istanbul.yml
文件:
instrumentation:
root: src
include-all-sources: true
verbose: true
excludes: ["*.test.js"]
reporting:
dir: "coverage"
对于后来发现这一点的人来说,具有 mocha
、@babel
和 nyc
的堆栈要多得多(我说多了吗?)更容易配置。不再需要 babel-node
.
package.json
:
{
...
"scripts": {
"coveralls": "cat reports/coverage/lcov/info | coveralls", // <-- Used on CI
"coverage": "nyc --report-dir=reports/coverage npm test",
"test": "mocha \"src/**/*.test.js?(x)\""
},
"mocha": {
"require": [
"@babel/register",
...
]
},
...
}
这是我的例子 .nycrc
:
{
"all": true,
"cache": false,
"temp-dir": "./reports/nyc_output",
"check-coverage": false,
"require": [
"@babel/register"
],
"exclude": [
"dist/",
"reports/",
"src/**/*.test.js",
"src/**/*.test.jsx"
],
"extension": [
".js",
".jsx"
],
"reporter": [
"cobertura",
"lcov",
"html"
],
"watermarks": {
"statements": [50, 80],
"lines": [50, 80],
"functions": [50, 80],
"branches": [50, 80]
}
}
我的目标是能够在 es6 中编写 src 和测试文件,都在同一个目录中(我希望我的测试文件与我的源文件并排),并获得覆盖率报告原始文件。
此时我能想到的最好办法是使用以下命令将我的测试文件包含在覆盖率报告中:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover \
node_modules/.bin/_mocha -- 'src/**/*.spec.*.js'
我确实尝试使用 cover -x 'src/**/*.spec.*.js'
,它还排除了转译文件,然后 mocha
无法 运行 测试。对于我的一生,我无法弄清楚如何做类似这样的事情:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover -x 'src/**/*.spec.*.js' \
node_modules/.bin/_mocha -- --require babel-core/register 'src/**/*.spec.*.js'
这将 运行 我所有的测试都正常,但会给我带来负面影响:
No coverage information was collected, exit without writing coverage information
所以我离我想要的不远,我想我只是错过了最后一段,如果有人能在这里提供帮助,我将不胜感激。
此致, D.
从来没有 -x
选项来做我想做的事。如果您不介意使用 .istanbul.yml
文件,这对我有用,可以从覆盖率报告中排除并排测试...
npm run cover
命令:
babel-node node_modules/.bin/babel-istanbul cover _mocha -- --opts mocha.opts
project_dir/mocha.opts
文件:
src/**/*.test.js
--compilers js:babel-register
--require babel-polyfill
project_dir/.istanbul.yml
文件:
instrumentation:
root: src
include-all-sources: true
verbose: true
excludes: ["*.test.js"]
reporting:
dir: "coverage"
对于后来发现这一点的人来说,具有 mocha
、@babel
和 nyc
的堆栈要多得多(我说多了吗?)更容易配置。不再需要 babel-node
.
package.json
:
{
...
"scripts": {
"coveralls": "cat reports/coverage/lcov/info | coveralls", // <-- Used on CI
"coverage": "nyc --report-dir=reports/coverage npm test",
"test": "mocha \"src/**/*.test.js?(x)\""
},
"mocha": {
"require": [
"@babel/register",
...
]
},
...
}
这是我的例子 .nycrc
:
{
"all": true,
"cache": false,
"temp-dir": "./reports/nyc_output",
"check-coverage": false,
"require": [
"@babel/register"
],
"exclude": [
"dist/",
"reports/",
"src/**/*.test.js",
"src/**/*.test.jsx"
],
"extension": [
".js",
".jsx"
],
"reporter": [
"cobertura",
"lcov",
"html"
],
"watermarks": {
"statements": [50, 80],
"lines": [50, 80],
"functions": [50, 80],
"branches": [50, 80]
}
}