javascript - 在 webpack 中传递与环境相关的变量

标签 javascript webpack

我正在尝试将 Angular 应用程序从 gulp 转换为 webpack。在 gulp 中,我使用 gulp-preprocess 替换 html 页面中的一些变量(例如数据库名称),具体取决于 NODE_ENV。使用 webpack 实现类似结果的最佳方法是什么?

最佳答案

有两种基本方法可以实现这一点。

定义插件

new webpack.DefinePlugin({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),

请注意,这只会“按原样”替换匹配项。这就是为什么字符串是它的格式。你可以有一个更复杂的结构,比如一个对象,但你明白了。

环境插件

new webpack.EnvironmentPlugin(['NODE_ENV'])

EnvironmentPlugin 在内部使用 DefinePlugin 并通过它将环境值映射到代码。 Terser 语法。

别名

您也可以通过 an aliased module 使用配置.从消费者的 Angular 来看,它看起来像这样:

var config = require('config');

配置本身可能如下所示:

resolve: {
    alias: {
        config: path.join(__dirname, 'config', process.env.NODE_ENV)
    }
}

假设 process.env.NODE_ENVdevelopment。然后它会映射到 ./config/development.js 中。它映射到的模块可以像这样导出配置:

module.exports = {
    testing: 'something',
    ...
};

关于javascript - 在 webpack 中传递与环境相关的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30030031/

相关文章:

javascript - 无法显示 Highchart

javascript - Windows 8 应用程序 Javascript 和 SQlite(数据库已锁定)

javascript - AJAX 中止后继续/恢复

css - 无法使用 sass-loader (Webpack) 加载背景图像

javascript - 如果过滤函数是异步的,如何使用 lodash 过滤列表

javascript - 在 firebase 中使用用户副本时,$$conf 被添加到对象中,因此我无法将用户复制到新位置?

webpack - 生产中的 Vuejs : prefix static path

javascript - 如何访问 Aurelia 中的 Google Analytics dataLayer 变量?

javascript - Webpack 2 + React - 使用 System.import 进行代码拆分时的嵌套路由

javascript - Webpack 以错误的顺序捆绑我的文件 (CommonsChunkPlugin)