我有一些东西要开发 - 例如,我不想让我的分布式构建文件膨胀的模拟。
在 RequireJS 中,您可以在插件文件中传递一个配置,并在此基础上要求一些东西。
对于 webpack,似乎没有办法做到这一点。首先为我使用过的环境创建运行时配置 resolve.alias根据环境重新指出需求,例如:
// All settings.
var all = {
fish: 'salmon'
};
// `envsettings` is an alias resolved at build time.
module.exports = Object.assign(all, require('envsettings'));
然后在创建 webpack 配置时,我可以动态分配 envsettings
指向的文件(即 webpackConfig.resolve.alias.envsettings = './' + env
)。
但是我想做这样的事情:
if (settings.mock) {
// Short-circuit ajax calls.
// Require in all the mock modules.
}
但如果环境不是模拟的,我显然不想在那些模拟文件中构建。
我可以再次使用 resolve.alias 手动将所有这些要求重新指向 stub 文件 - 但有没有一种方法可以让你感觉不那么老套?
有什么想法可以做到吗?谢谢。
最佳答案
您可以使用 define plugin .
我通过在你的 webpack 构建文件中做一些简单的事情来使用它,其中 env
是导出设置对象的文件的路径:
// Webpack build config
plugins: [
new webpack.DefinePlugin({
ENV: require(path.join(__dirname, './path-to-env-files/', env))
})
]
// Settings file located at `path-to-env-files/dev.js`
module.exports = { debug: true };
然后在你的代码中
if (ENV.debug) {
console.log('Yo!');
}
如果条件为假,它将从您的构建文件中删除此代码。你可以看到一个工作 Webpack build example here .
https://stackoverflow.com/questions/28572380/
相关文章:
visual-studio-2010 - 在每次编译时禁用 "output window"的显示
android - 错误 :(6, 0) 未找到 Gradle DSL 方法: 'google()'
unit-testing - 没有找到测试。确保已安装的测试发现器和执行器、平台和框架版本设置正确,
go - go build 是什么意思? (去构建与去安装)
testing - 如何在不从命令行测试的情况下运行 sbt 汇编命令?
php - 错误构建 : fatal error: pcre. h:没有这样的文件或目录
java - 如何在 Eclipse 中更新 Maven 存储库?