如何阻止babel-preset-es2015编码模板字面量中的Unicode字符?
如何阻止babel-preset-es2015编码模板字面量中的Unicode字符?
当然可以实现!babel-preset-es2015里负责处理模板字面量的插件默认会把Unicode字符转义成\uXXXX格式,但通过调整配置就能让它保留原始字符。
具体配置方法
因为babel-preset-es2015是多个Babel插件的集合,我们需要覆盖其中transform-es2015-template-literals插件的默认行为:
修改Babel配置文件(比如
.babelrc或babel.config.json):
先排除预设中默认的模板字面量插件,再手动引入带参数的版本:{ "presets": [ ["es2015", { "exclude": ["transform-es2015-template-literals"] }] ], "plugins": [ ["transform-es2015-template-literals", { "preserveRaw": true }] ] }关键参数解释
preserveRaw: true这个选项会告诉Babel保留模板字符串中的原始Unicode字符,不再自动转义成编码形式。
效果示例
假设你的原始代码是:
const message = `你好嗎`;
配置完成后,编译后的代码会直接保留你好嗎,而不是被转义为'\u4F60\u597D\u55CE'。
补充说明
如果你已经升级到Babel 7,babel-preset-es2015已经被@babel/preset-env取代,对应的插件是@babel/plugin-transform-template-literals,配置逻辑完全一致,只需要把插件名称换成新版本的即可。
内容的提问来源于stack exchange,提问作者3142 maple
相关产品推荐
相关产品推荐

