我正在试着把一个棱角分明的应用程序从大口大咽变成webpack.在GULP中,我使用GULP-Preprocess替换html页面中的一些变量(例如,数据库名称),具体取决于NODE_ENV.与webpack取得类似结果的最佳方式是什么?

推荐答案

实现这一点有两种基本方法.

定义插件

new webpack.定义插件({
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),

请注意,这将"按原样"替换匹配项.这就是字符串采用原样格式的原因.你可以有一个更复杂的 struct ,比如那里的一个物体,但是你得到了这个 idea .

环境插件

new webpack.环境插件(['NODE_ENV'])

环境插件在内部使用定义插件,并将环境值映射为代码.简洁的语法.

别名

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

var config = require('config');

配置本身可能如下所示:

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

假设process.env.NODE_ENV等于development.然后会映射到./config/development.js.它映射到的模块可以导出如下配置:

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

Javascript相关问答推荐

从所选的select jQuery中删除多个属性

CSS背景过滤器忽略转换持续时间(ReactJS)

Vue.js使用特定索引值的数据更新html

TypScript:根据共享属性对项目进行分组并为其分配groupID

如何使用JavaScript对切换的声音设置音量

React状态变量在使用++前置更新时引发错误

如何使用Echart 5.5.0创建箱形图

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

在Angular中将样式应用于innerHTML

按下同意按钮与 puppeteer 师

Msgraph用户邀请自定义邮箱模板

html + java script!需要帮助来了解为什么我得到(无效的用户名或密码)

如何从URL获取令牌?

如何从HTML对话框中检索单选项组的值?

如何在 Select 文本时停止Click事件?

如何在JAVASCRIPT中合并两组对象并返回一些键

搜索功能不是在分页的每一页上进行搜索

无法避免UV:flat的插值:非法使用保留字"

使用父标签中的Find函数查找元素

FileReader()不能处理Firefox和GiB文件