Ich verwende TypeScript, Mocha (mit Mocha-Typescript-Plugin) zum Testen und WebPack für Build in meiner Anwendung.Testen: mocha + typescript + webpack
Vor kurzem habe ich mich entschlossen DefinePlugin für WebPack zu trennen configs für prod und dev Umgebungen hinzuzufügen:
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;
In Snippet oben gibt es eine globale Variable __ENVIRONMENT__
, die Einstellungen, die ich verwenden möchten wählen können. Diese Variable wird in webpack.config.js wie folgt definiert:
module.exports = function(env) {
var config = {
// ...
plugins: [
new ExtendedDefinePlugin({
__ENVIRONMENT__: env === 'prod' ? 'prod' : 'dev',
})
]
// ...
}
return config;
}
Also ich Tests Ausführung in package.json ändern
"test": "webpack --env=dev && mocha --recursive"
Wenn ich "test", Mokka Wurf Fehler nennen (webpack baut richtig Dateien):
ReferenceError: __ENVIRONMENT__ is not defined
Testing Beobachter wird auch nicht funktionieren:
"test-watch": "mocha-typescript-watch"
Wurffehler "Beendet mit 1".
Ist es möglich, sie zusammenzubringen? Oder soll ich einen anderen Weg zum Testen benutzen?
DefinePlugin sollte buchstäblich "__ENVIRONMENT__" durch "prod" oder "dev" in der Build-Ausgabe ersetzen - Sind Sie sicher, dass die Substitution für den Browser funktioniert? – Catalyst
@Catalyst, ja, es ist. Aber es ist nicht die Ursache für diesen Umstand - ich habe einfach keine vollständigen Konzepte von Mokka und Webpack verstanden. – user1820686