在Karma中设置NODE_ENV运行webpack的正确方法是什么?
我正在用Webpack构build我的项目,并使用Karma来运行testing。
我想configurationKarma来设置process.env.NODE_ENV
来“testing”Webpack来执行testing环境的项目的条件构build,URL映射到localhost,而不是生产域名。
为此,我使用Webpack的env-replace-loader
,它根据process.env.NODE_ENV
的值读取其configuration文件environments.json
并设置variables,例如API_URL。 在生产版本中,我使用Gulp来设置process.env.NODE_ENV
并启动webpack。 有用。
我想在testing版本中设置process.env.NODE_ENV = 'test'
,通过运行karma start karma.conf.js
。 目前我只是在karma.conf.js
说process.env.NODE_ENV = "test"
。
有没有更好的方法来做到这一点?
另外,我尝试使用webpack.config.js中的webpack的webpack.config.js
来设置这个variables:
const webpackConfig = { ... plugins: [ new webpack.DefinePlugin({ process.env: {'NODE_ENV': 'test'} }), ... ], ... }
它不会工作:webpack env-replace-loader
诅咒Module build failed: TypeError: Cannot read property 'URL' of undefined
– 我想,它不能访问它看不到的节点报告
在你的webpackconfiguration中,请改用这个JSON.stringify('name')。 尝试这样的事情:
plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('production'), APP_ENV: JSON.stringify('browser') }, }) ],
这与webpack运行一个例子或类似的东西。 例如,我在运行示例时需要使用CSS,但在编译生产时会被忽略。
我得到了与Karmaconfiguration相同的问题,但是我修复了将该插件添加到Karmaconfiguration文件的webpack部分。 这是我的文件,例如:
const webpack = require('webpack'); module.exports = function(config) { config.set({ browsers: ['PhantomJS'], files: [ 'tests.webpack.js', { pattern: 'src/**/__tests__/*.js', included: false, served: false, watched: true } ], frameworks: ['jasmine'], preprocessors: { 'tests.webpack.js': ['webpack', 'sourcemap', 'coverage'], }, reporters: ['progress', 'notification'], webpack: { devtool: 'inline-source-map', module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader' } ] }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify('test') } }) ], watch: true }, webpackServer: { noInfo: true, } }); };
我希望对你也有帮助!