【发布时间】:2021-09-27 08:28:52
【问题描述】:
我目前正在将一些使用 require 函数模块化的 javascript 转换为 ES6 import 语句。
比如我要转换
var dom = require("./lib/dom");
var event = require("./event");
以下-
import * as dom from "./lib/dom.js";
import * as event from "./event.js";
我尝试使用正向预测来匹配变量名(dom 和 event)
\w+(?=\s+=\s+require\()
但是,当我使用匹配替换来构建 import 语句时,它包含变量名称后面的文本 -
import * from $&
变成-
var import * from dom = require("./lib/dom");
var import * from event = require("./event");
这可以通过regular expression 完成吗?如果有,怎么做?
【问题讨论】:
-
通常你可以使用几个 helper CLI 将 cjs 转换为 esm
-
我不确定是否可以使用正则表达式,但如果可能的话它应该很复杂。
var dom = require("./lib/dom");几乎可以出现在代码中的任何位置,但import * as dom from "./lib/dom.js";不能。正则表达式必须检查当前上下文。 -
@tmhao2005 我已经尝试了一些工具,例如cjs-to-es6,但在某些情况下它们失败了,可能是因为original code是使用AMD Simplified CommonJS wrapping模块化的。我更愿意以交互方式检查每个替换。
标签: javascript regex