在這篇文章中,發(fā)現(xiàn)是可以借助babel的API手動(dòng)把let
變成var
飞袋,那么
能不能自動(dòng)把代碼轉(zhuǎn)為ES5戳气?
可以,使用babel/core
和babel/preset-env
即可
@babel/core包含@babel/parser巧鸭,@babel/traverse瓶您,@babel/generator
import { parse } from "@babel/parser"
import * as babel from "@babel/core"
import * as fs from 'fs'
// test.js代碼在下面??
const code = fs.readFileSync('./test.js').toString()
// 將原始code轉(zhuǎn)為ast
const ast = parse(code, { sourceType: 'module' })
// transformFromAstSync接收原始ast,和原始code蹄皱,生成新code
const result = babel.transformFromAstSync(ast, code, {
presets: ['@babel/preset-env']
})
// 得到es5代碼览闰,寫(xiě)入test.es5.js
fs.writeFileSync('./test.es5.js', result.code)
// test.js在這里??
// let a = 'let'
// let b = 2
// const c = 3
運(yùn)行上面代碼
可以發(fā)現(xiàn)所有let
,const
聲明巷折,都變成了var
,其實(shí)不光是變量聲明崖咨,babel.transformFromAstSync
會(huì)將所以ES5不支持的語(yǔ)法锻拘,變成合法ES5代碼