原文链接: cjs 转 esm 使用 babel插件 babel-plugin-transform-commonjs
上一篇: vite 尝试和入门
主要目的为将cjs文件转换为esm的形式
https://www.npmjs.com/package/babel-plugin-transform-commonjs
需要转化的文件index.js
module.exports = {
'fs': require('fs'),
'add': require('./add'),
'ceil': require('./ceil'),
'divide': require('./divide'),
'floor': require('./floor'),
'max': require('./max'),
'maxBy': require('./maxBy'),
'mean': require('./mean'),
'meanBy': require('./meanBy'),
'min': require('./min'),
'minBy': require('./minBy'),
'multiply': require('./multiply'),
'round': require('./round'),
'subtract': require('./subtract'),
'sum': require('./sum'),
'sumBy': require('./sumBy')
};
执行转换
const plugin = require('babel-plugin-transform-commonjs')
const fs = require('fs')
const {transformAsync} = require('@babel/core');
const defaults = {
plugins: [plugin],
sourceType: 'module',
};
async function main() {
let p = './index.js'
const input = fs.readFileSync(p, 'utf-8')
const {code} = await transformAsync(input, {
...defaults,
sourceType: 'module',
});
console.log('code:\n', code)
}
main()
转换结果
import _sumBy from "./sumBy";
import _sum from "./sum";
import _subtract from "./subtract";
import _round from "./round";
import _multiply from "./multiply";
import _minBy from "./minBy";
import _min from "./min";
import _meanBy from "./meanBy";
import _mean from "./mean";
import _maxBy from "./maxBy";
import _max from "./max";
import _floor from "./floor";
import _divide from "./divide";
import _ceil from "./ceil";
import _add from "./add";
import _fs from "fs";
var module = {
exports: {}
};
var exports = module.exports;
module.exports = {
'fs': _fs,
'add': _add,
'ceil': _ceil,
'divide': _divide,
'floor': _floor,
'max': _max,
'maxBy': _maxBy,
'mean': _mean,
'meanBy': _meanBy,
'min': _min,
'minBy': _minBy,
'multiply': _multiply,
'round': _round,
'subtract': _subtract,
'sum': _sum,
'sumBy': _sumBy
};
export default module.exports;
Process finished with exit code 0