問題
バージョン: Babel 6.X
グローバルインストールして CLI として使う npm パッケージを作っていて、内部で Babel (Node API) を使っていたのだが、プラグイン名の解決に失敗した。
var result = babel.transform(code, {
plugins: ["transform-react-jsx"],
});
ReferenceError: Unknown plugin "transform-react-jsx" specified in "base" at 0
状況をもう少し詳しく説明すると、ツールの package.json の dependencies
には babel-plugin-transform-react-jsx
が含まれている。開発時には動作するのだが、 Babel と関係ない環境からツールを使おうとすると、カレントディレクトリから node_modules を探しに行ってしまいプラグインが見つからない。
解決方法
plugins
にファイルパスを指定できるようだ。
var result = babel.transform(code, {
plugins: [Path.join(__dirname, '../node_modules/babel-plugin-transform-react-jsx/lib/index.js')]
});