【发布时间】:2017-06-17 11:39:15
【问题描述】:
我使用 TypeScript、Mocha(带有 mocha-typescript 插件)进行测试,使用 WebPack 构建我的应用程序。
最近我决定为 WebPack 添加 DefinePlugin 来分离 prod 和 dev 环境的配置:
import { AppSettings as DevSettings } from './appSettings.dev'
import { AppSettings as ProdSettings } from './appSettings.prod'
declare var __ENVIRONMENT__: string;
let settings = __ENVIRONMENT__ === 'prod' ? ProdSettings : DevSettings
export let AppSettings = settings;
在上面的 sn-p 中有一个全局变量 __ENVIRONMENT__ ,它有助于选择我想要使用的设置。这个变量在 webpack.config.js 中定义如下:
module.exports = function(env) {
var config = {
// ...
plugins: [
new ExtendedDefinePlugin({
__ENVIRONMENT__: env === 'prod' ? 'prod' : 'dev',
})
]
// ...
}
return config;
}
所以我将 package.json 中的测试执行更改为
"test": "webpack --env=dev && mocha --recursive"
如果我调用“test”,mocha 会抛出错误(webpack 正确构建文件):
ReferenceError: __ENVIRONMENT__ is not defined
测试观察者也不起作用:
"test-watch": "mocha-typescript-watch"
抛出错误“Exited with 1”。
有没有可能让他们一起工作?或者我应该使用其他方式进行测试?
【问题讨论】:
-
DefinePlugin 应该在构建输出中将
__ENVIRONMENT__替换为 'prod' 或 'dev' - 您确定该替换对浏览器有效吗? -
@Catalyst,是的。但这不是这种情况的根本原因——我只是没有完全理解 mocha 和 webpack 的概念。
标签: typescript webpack mocha.js