Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npm 运行摩卡测试时使用不同的巴贝尔预设_Npm_Mocha.js_Babeljs - Fatal编程技术网

Npm 运行摩卡测试时使用不同的巴贝尔预设

Npm 运行摩卡测试时使用不同的巴贝尔预设,npm,mocha.js,babeljs,Npm,Mocha.js,Babeljs,我的npm包构建使用babel运行,我在我的package.json中使用 “巴别塔”:{“预设”:[“es2015”]} 我还配置了一个mocha测试脚本 “测试”:“摩卡——编译器js:babel核心/寄存器” 但是,我希望使用不同于为我的构建指定的巴别塔预设来运行测试 可能吗?我想你能做到吗?你可以创建一个名为babel hook.js的文件,并将其放入: require("babel-register")({ presets: [ /* whatever values you wan

我的npm包构建使用babel运行,我在我的
package.json
中使用

“巴别塔”:{“预设”:[“es2015”]}

我还配置了一个mocha测试脚本

“测试”:“摩卡——编译器js:babel核心/寄存器”

但是,我希望使用不同于为我的构建指定的巴别塔预设来运行测试


可能吗?我想你能做到吗?

你可以创建一个名为
babel hook.js的文件,并将其放入:

require("babel-register")({
  presets: [ /* whatever values you want here */ ],
});
然后像这样运行摩卡咖啡:

mocha --require babel-hook
"babel": {
    "env": {
      "test-console": {
        "presets": ["@babel/preset-env"],
        "plugins": ["@babel/plugin-proposal-class-properties"]
      }
    ,
      "test": {
        "presets": ["@babel/preset-env"],
        "plugins": ["@babel/plugin-proposal-class-properties", "transform-remove-console"]
      }
    }
这将注册Babel,您可以使用任何您想要的配置,与
package.json中的任何配置分开,这样您就可以设置
测试
环境变量并相应地更改预设:

在您的
包.json中:

"babel": {
    "env": {
      "test": {
        "presets": [/* your test presets */]
      }
    },
    "presets": [/* your usual presets */]
}
然后,像这样运行mocha命令:

"test: BABEL_ENV=test mocha --compilers js:babel-core/register"

关于在package.json中配置babel的答案部分是正确的。 我需要添加单独的env条目以使其正常工作,否则env外部的配置将始终运行。 最后的配置示例如下所示:

mocha --require babel-hook
"babel": {
    "env": {
      "test-console": {
        "presets": ["@babel/preset-env"],
        "plugins": ["@babel/plugin-proposal-class-properties"]
      }
    ,
      "test": {
        "presets": ["@babel/preset-env"],
        "plugins": ["@babel/plugin-proposal-class-properties", "transform-remove-console"]
      }
    }
和脚本:

 "scripts": {
    "test-console-log": "BABEL_ENV=test-console mocha || TRUE",
    "test": "BABEL_ENV=test mocha || TRUE"
  }

也很好。我认为这是一种更具表现力的方式。这意味着当有人查看
package.json
时,就可以清楚地知道测试预置的依赖关系是用来做什么的。我刚刚意识到这可能在Windows上不起作用,因为Windows shell不理解环境变量声明。我认为Windows中有一些等效的命令。也许是
SET BABEL_ENV=test
或者类似的东西?谢谢,BABEL.ENV.test.presets真的救了我一天谢谢,“插件”:[“@BABEL/plugin提案类属性”]救了我一天