sounisi5011 / vec-draw

[WIP] SVGを書きやすくするDSL
0 stars 0 forks source link

avaのテストコードで`import.meta`を使えるようにする #14

Closed sounisi5011 closed 5 years ago

sounisi5011 commented 5 years ago

概要

import.meta構文を使うために、@babel/plugin-syntax-import-metaプラグインを導入する。

詳細

開発中の #13 にて、.mjsで記述されたテストコードのカレントディレクトリをファイルの存在する場所に変更するため、以下のコードを挿入している。

process.chdir('./test/');

ただし、このコードは、avaがカレントディレクトリをプロジェクトルートに設定している場合にのみ機能し、単体で実行した場合には機能しない。そこで、ファイルの置かれたパスを参照し、カレントディレクトリを設定するコードに変更したほうが良い。

ファイルの置かれたパスを参照する場合、通常のコードでは__dirname等の変数を使用する。

process.chdir(__dirname);

しかし、これらの変数は.mjsのファイル内では使えないため、代わりに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の設定に追加することを提案する。

sounisi5011 commented 5 years ago

16 の関係で、ソースコードをTypeScriptに移行するかもしれない。

移行したら、この提案は不要になるかも…

sounisi5011 commented 5 years ago

16 を完了した結果、テストコードは全てTypeScriptで記述することになった。ES5へコンパイルする設定にしているため、__dirnameが普通に使える。よって、import.meta.urlの使用は必要ない。

closeする。