在Pete Hunt's Webpack How To将此代码用于:阅读环境变量时,JSON.parse/stringify有什么用?
// definePlugin takes raw strings and inserts them, so you can put strings of JS if you want.
var definePlugin = new webpack.DefinePlugin({
__DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true')),
__PRERELEASE__: JSON.stringify(JSON.parse(process.env.BUILD_PRERELEASE || 'false'))
});
什么是JSON.stringify(JSON.parse(..))
这里需要的? JSON字符串化/解析有助于克隆对象以避免突变,但process.env.BUILD_DEV
是(且只能是?)一个字符串。那么,为什么要使用它?
TheTo克隆一个对象,可以使用'var newObj = JSON.parse(JSON.stringify(object))''而不是相反 - 也许这是一个黑客来确保字符串是有效的,即使它包含换行符或引号 – mplungjan
如果环境变量包含与数字,null,true或false(或正确转义的转义字符串或json对象)不同的东西,则会失败。可能是为了避免人们将BUILD_DEV设置为“是”,也许?虽然我会删除outlord'JSON.stringify()' –