在我的项目中,我使用webpack捆绑JavaScript,并且我有导出js-objects的模块,如:
module.exports = {
name: 'Test',
tableName: 'TestTable',
properties: {
id: {
description: 'identifier',
columnName: 'id'
},
title: {
description: 'title or something',
columnName: 'title'
}
}
}
这些模块由后端和前端使用。但是我不想在webpack包中看到像“tableName”和“columnName”这样的属性。有没有办法排除它们或它们的值,但保留模块的其余部分?
UPD 即可。我认为它可以是一种解决方案:
webpack.config.js
var webpack = require('webpack');
module.exports = {
entry: './index.js',
output: {
path: './build/',
filename: 'bundle.js'
},
plugins: [
new webpack.DefinePlugin({
P: JSON.stringify(true)
})
]
};
index.js:
var entity = require('./entity.js');
console.log(entity.tableName)
entity.js:
module.exports = {
name: 'test',
tableName: !P && 'TestTable'
}
webpack -p
输出:
bundle.js:1 false
答案 0 :(得分:1)
恕我直言,这不是webpack范围的一部分。但是,您可以根据我猜的某些ENV
变量添加/删除成员。
答案 1 :(得分:1)
您可以将DefinePlugin
使用全局常量。
DefinePlugin允许您创建可在编译时配置的全局常量。这对于允许开发构建和发布构建之间的不同行为非常有用。例如,您可以使用全局常量来确定是否进行日志记录;也许您在开发构建中执行日志记录,但在发布版本中不执行。这就是DefinePlugin实现的那种场景。
new webpack.DefinePlugin({
PRODUCTION: JSON.stringify(true)
})
if (PRODUCTION)
//here you can have your conditional objects which you want to build or not