首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用npm脚本运行客户端javascript的代码覆盖率

如何使用npm脚本运行客户端javascript的代码覆盖率
EN

Stack Overflow用户
提问于 2017-10-24 05:39:16
回答 1查看 587关注 0票数 1

我有一个用basic javascript编写的客户端web应用程序,它应该在另一个应用程序内部的修改过的铬浏览器中运行。代码进行了广泛的重构以在当前设置中工作,并进行了更新以使用ES6功能。旧版本使用Grunt进行了一些基于浏览器的mocha测试。

现在,我希望将测试(如果需要,还可以重写它们)添加到新的设置中,并添加代码覆盖率,并用npm脚本替换Grunt。

到目前为止,我成功地重写了许多测试,并使用以下命令运行它们:

./node_modules/babel-cli/bin/babel.js js --out-dir tmp/js --source-maps ./node_modules/babel-cli/bin/babel.js test --out-dir tmp/test --source-maps ./node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/test-spec.html spec <some options>

这给出了测试的输出。他们都通过了。

现在,我想使用nyc添加覆盖范围,但我不知道如何让它工作。

我需要做什么才能将代码覆盖率添加到此配置中?

EN

回答 1

Stack Overflow用户

发布于 2017-10-25 17:12:21

我对伊斯坦布尔和纽约市没有太多的经验,但不久前我设法把一个工作环境整合在一起:在我的Package.json中,我定义了几个脚本。覆盖范围如下所示:

代码语言:javascript
运行
复制
scripts : {
    "test:c": "set NODE_ENV=test&& npm run coverage",
    "coverage": "./node_modules/.bin/nyc --reporter=lcov --reporter=text mocha test/*.* --compilers js:babel-core/register --recursive"
}

我启动了test:c脚本,该脚本设置NODE_ENV变量,然后运行覆盖率脚本。所有测试都在test目录中。“--编译器js:babel-core/register”标志在那里,这样代码就可以直接从es6转译过来。看起来你已经通过前两个脚本做到了这一点,所以你可以跳过这一部分。

顺便说一句,这是在windows上。如果我没记错的话,在unix系统上,你可以通过"NODE_ENV=test“直接设置NODE_ENV。此外,如果您执行类似的设置,请注意类似“设置测试测试&& npm运行另一个脚本”这样的空格,因为这会将NODE_ENV设置为“测试”而不是“测试”,并且不会因此不使用插件。

我使用以下依赖项:

代码语言:javascript
运行
复制
"mocha": "3.2.0",
"nyc": "^11.0.2",
"babel-plugin-istanbul": "^4.1.4",

下面是我的.babelrc配置:

代码语言:javascript
运行
复制
{
  "presets": [
    ["es2015", { "modules": false }],
    "stage-0",
    "airbnb"
  ],
  "env": {
    "test": {
      "plugins": [
        ["istanbul", {
          "exclude": [
            "**/*.spec.js",
            "webpack.config.js"
          ]
        }]
      ]
    }
  }
}

可能最重要的部分是当NODE_ENV设置为测试时使用的伊斯坦布尔插件的配置。这个与纽约市相关的配置是我的package.json的一部分:

代码语言:javascript
运行
复制
  "nyc": {
    "include": [
      "src/**/*.js"
    ],
    "exclude": [
      "shared/src/**/*.js"
    ],
    "require": [
      "babel-core/register"
    ],
    "sourceMap": false,
    "instrument": false
  },

无论如何,为了方便起见,最好在json包中编写单独的脚本,然后通过另一个脚本将它们串在一起,如下所示:

代码语言:javascript
运行
复制
"script3" :   "npm run script1 && npm run script2"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46898949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档