4

私は次のプロジェクトで ES6 を使用したいと考えており、その目的のために Traceur をトランスパイラーとして使用しています。入門ガイドに記載されている方法で動作するようになりました。ただし、コンパイル オフラインページで説明されている方法で、すべてのソース ファイルを 1 つの縮小ファイルにコンパイルしたいと考えています。しかし、ネストされたディレクトリ構造に編成された複数のソース ファイルで動作させることはできません。

問題を説明するためのサンプル プロジェクトを次に示します。ルート フォルダーに index.html があり、src の下に 2 つの .js ファイルがあります。

<project-root>
/index.html
/src/one.js
/src/two.js

index.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

助言がありますか?

4

0 に答える 0