1. ホーム
  2. javascript

[解決済み] Babelファイルが変換されずにコピーされてしまう

2022-10-28 03:44:43

質問

このようなコードがあります。

"use strict";

import browserSync from "browser-sync";
import httpProxy from "http-proxy";

let proxy = httpProxy.createProxyServer({});

で、インストールした babel-corebabel-cli を npm 経由でグローバルにコンパイルしています。ポイントは、ターミナルでこれでコンパイルしようとしたときです。

babel proxy.js --out-file proxified.js

出力ファイルはコンパイルされずにコピーされます(つまり、ソースファイルと同じです)。

ここで何が足りないのでしょうか?

どのように解決するのですか?

Babel は変換フレームワークです。6.x 以前では、デフォルトで特定の変換を有効にしていましたが、多くの ES6 機能をネイティブでサポートする Node のバージョンが使用されるようになり、設定可能であることがより重要になりました。デフォルトでは、Babel 6.xはいかなる変換も行いません。実行する変換を指示する必要があります。

npm install babel-preset-env

を実行し

babel --presets env proxy.js --out-file proxified.js

を作成するか、あるいは .babelrc を含むファイルを作成します。

{
    "presets": [
        "env"
    ]
}

と入力し、前と同じように実行します。

env は、基本的にすべての標準的なES*の動作をES5にコンパイルすることを意味するプリセットです。ES6をサポートするNodeのバージョンを使用している場合、次のことを考慮する必要があります。

{
    "presets": [
        ["env", { "targets": { "node": "true" } }],
    ]
}

を追加することで、Node のバージョンでサポートされていないものだけを処理するようにプリセットに指示することができます。また、ブラウザのサポートが必要な場合は、ターゲットにブラウザのバージョンを含めることができます。