我想在我的下一个项目中使用 ES6,为此我使用 Traceur 作为转译器。我让它按照入门指南中描述的方式工作。但是,我想以他们在“离线编译”页面上描述的方式将我的所有源文件编译成单个缩小文件。但我无法让它与嵌套目录结构中组织的多个源文件一起工作。
这是一个解释问题的示例项目。它在根文件夹中有 index.html,在 src 下有两个 .js 文件。
<project-root>
/index.html
/src/one.js
/src/two.js
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="traceur.js" type="text/javascript"></script>
<script src="bootstrap.js" type="text/javascript"></script>
<script type="module" src="src/two.js"></script>
<script type="module">
import Two from 'src/two.js';
let t = new Two();
console.log(t);
</script>
<title>Title</title>
</head>
<body>
</body>
</html>
src/one.js
export default class One {
constructor() {
console.log("One constructor");
}
}
src/two.js
import One from 'src/one.js';
export default class Two extends One {
constructor () {
console.log("Two constructor");
super();
}
}
正如我所说,如果我在浏览器中打开 index.html,它将正常工作,将 Two 的实例打印到控制台。
但是当我尝试离线编译时,出现以下错误
PS D:\code\flattraceur> traceur.cmd src/two.js --out out\two.js
[Error: Error: ENOENT: no such file or directory, open 'D:\code\flattraceur\out\src\one.js'
Specified as src/one.js.
Imported by ../src/two.js.
Normalizes to src/one.js
locate resolved against base 'D:/code/flattraceur/out/'
]
如您所见,在编译 src/two.js 时,traceur 在输出目录下查找 src/one.js。我在 traceur 上找不到任何选项,可以让我自定义其搜索引用模块的根目录。我也尝试了该--dir
选项,但它也失败了。
PS D:\code\flattraceur> traceur.cmd --dir src out
Error: At least one input file is needed
有什么建议么?