Closed sounisi5011 closed 5 years ago
import.meta構文を使うために、@babel/plugin-syntax-import-metaプラグインを導入する。
import.meta
開発中の #13 にて、.mjsで記述されたテストコードのカレントディレクトリをファイルの存在する場所に変更するため、以下のコードを挿入している。
.mjs
process.chdir('./test/');
ただし、このコードは、avaがカレントディレクトリをプロジェクトルートに設定している場合にのみ機能し、単体で実行した場合には機能しない。そこで、ファイルの置かれたパスを参照し、カレントディレクトリを設定するコードに変更したほうが良い。
ファイルの置かれたパスを参照する場合、通常のコードでは__dirname等の変数を使用する。
__dirname
process.chdir(__dirname);
しかし、これらの変数は.mjsのファイル内では使えないため、代わりにimport.meta.url等を参照する必要がある。
import.meta.url
import path from 'path'; import url from 'url'; const { URL } = url; process.chdir( path.dirname( new URL(import.meta.url).pathname ) );
だがこの機能は、@babel/plugin-syntax-import-metaプラグインを導入しなければ有効化されず、機能しない。
そこで、このプラグインを導入し、avaの設定に追加することを提案する。
移行したら、この提案は不要になるかも…
closeする。
概要
import.meta
構文を使うために、@babel/plugin-syntax-import-metaプラグインを導入する。詳細
開発中の #13 にて、
.mjs
で記述されたテストコードのカレントディレクトリをファイルの存在する場所に変更するため、以下のコードを挿入している。ただし、このコードは、avaがカレントディレクトリをプロジェクトルートに設定している場合にのみ機能し、単体で実行した場合には機能しない。そこで、ファイルの置かれたパスを参照し、カレントディレクトリを設定するコードに変更したほうが良い。
ファイルの置かれたパスを参照する場合、通常のコードでは
__dirname
等の変数を使用する。しかし、これらの変数は
.mjs
のファイル内では使えないため、代わりにimport.meta.url
等を参照する必要がある。だがこの機能は、@babel/plugin-syntax-import-metaプラグインを導入しなければ有効化されず、機能しない。
そこで、このプラグインを導入し、avaの設定に追加することを提案する。