web-dev-qa-db-ja.com

ES6機能を有効にしてNode.jsアプリを実行するには?

require hook of BabelJS (以前の名前は6to5)を使用して es6features でノードアプリを実行します:

// run.js
require("babel/register");
require("./app.js6");

node run.jsを呼び出して、app.js6を実行します。 BabelJSをインストールし、es6featuresを使用するプロジェクトごとにrun.jsを提供する必要があります。 nodejs6 app.js6のような呼び出しを好むでしょう。このシステムを独立して実現するにはどうすればよいですか(UnixおよびWindows)?

67
maiermic

babel-cliおよびbabel-preset-es2015(別名ES6)の依存関係をアプリのpackage.jsonファイルに追加し、startスクリプトを定義します。

{
  "dependencies": {
    "babel-cli": "^6.0.0",
    "babel-preset-es2015": "^6.0.0"
  },
  "scripts": {
    "start": "babel-node --presets es2015 app.js"
  }
}

その後、次のコマンドを実行するだけでアプリを実行できます。

npm start

Babelの使用を中止することに決めた場合(たとえば、Node.jsがすべてのES6機能をサポートした後)、package.jsonから削除できます。

{
  "dependencies": {},
  "scripts": {
    "start": "node app.js"
  }
}

この利点の1つは、アプリを実行するコマンドが同じままであることです。これは、他の開発者と協力している場合に役立ちます。

129

設定方法es6をサポートするnode.jsアプリとファイル変更時のサーバーリロード


I.構成手順(最初からプロジェクトを作成する):

1.ターミナルでプロジェクトのメインディレクトリに移動します

npm init //プロジェクトのpackage.jsonを作成

2.インストールの依存関係

npm install --save-dev babel
npm install --save-dev babel-cli
npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-stage-0 //*1
npm install --save-dev nodemon

1-ステージ1または2にすることもできます。使用するesの機能によって異なります

3. package.jsonファイルにそのようなものを含める必要があります(確かに、パッケージのバージョンは異なりますが、問題ありません)。

"devDependencies": {
  "babel": "^6.5.2",
  "babel-cli": "^6.16.0",
  "babel-preset-es2015": "^6.16.0",
  "babel-preset-stage-0": "^6.16.0",
  "nodemon": "^1.11.0"
}

4.ルートプロジェクトディレクトリに.babelrcファイルを作成します(package.jsonファイルがあります)

{
 "presets": ["es2015", "stage-0"]
}

5. 2つのディレクトリを作成します。

src-es6で書き込まれたファイルのある作業ディレクトリ

dist-ここでファイルはbabelを使用してes5にコンパイルされます

プロジェクトのルートディレクトリは次のようになります。

  • 事業
    • src
      • index.js //メインプロジェクトファイル
    • dist
    • package.json
    • .babelrc

7. package.jsonに必要なコマンドを追加します。

"scripts": {
  "watch": "babel -w src/ -d dist/",
  "build": "babel src/ -d dist/",
  "serve": "babel -w src/ -d dist/ | nodemon --watch dist",
  "test": "echo \"Error: no test specified\" && exit 1"
}

8.利用可能なコマンド:

npm run watch // srcディレクトリの監視変更の監視を開始し、distにコンパイルします

npm run build // srcディレクトリからdistにファイルをコンパイルします

npm run serve //ウォッチ+ノードサーバーの起動を行っています。ファイルが変更されるたびに、distディレクトリの変更を監視しているnodemonを使用してノードサーバーを再起動します。

9.最終ノート

  • サーバーは、dist/index.jsファイルをメインファイルとして実行します。
  • ファイルdist/index.jsはsrc/index.jsからコンパイルされるため、プロジェクトのメインファイルが必要です。
  • gitで無視するにはdistディレクトリを追加する必要があります(ただし、ノードパッケージの場合はnpmで無視しないでください)

10.サーバーを実行し、srcディレクトリでアプリの作成を開始します。

npm run serve

II。より簡単な方法(ボイラープレートを使用する準備ができています)

あなたにとってポイントが多すぎる場合、githubで完全なウォーキングボイラープレートが利用可能です- https://github.com/maciejsikora/node-express-babel-boilerplate

36
Maciej Sikora

Nodeを--harmonyフラグとともに使用して、es6機能でスクリプトを実行できます

16
Safi
  1. node -r babel-register scripts.js

これが最適なソリューションです

  1. npx babel-node scripts.js

!Babelノードは終了プロセスの場合はうまく機能せず、kexecパッケージもこの場合は役に立ちません(私が試したように)

どちらの場合も、アプリのプリセットとプラグインを記述する.babelrcを使用する必要があります。

npxは、npmまたはyarnとともにインストールされていないライブラリの実行にのみ使用しています。それ以外の場合は、npm i -g babel-cli、次にbabel-node script.jsが必要です

6
SerzN1

nodejs6 app.js6のような呼び出しを好むでしょう。

Babel-core apiを使用してラッパーソリューションを試すことができます。

// Save as es6.js

var babel = require("babel-core");
var argc = process.argv.length;

babel.transformFile(process.argv[argc - 1], function (err, result) {
    eval(result.code);
});

node es6 thefile.jsでes6の注目のスクリプトを実行します

リファレンス:公式 sage doc

3
Jiahao D.

これを参照してください:

https://stackoverflow.com/a/51485027/1549191

またはこの定型句:

定型文:node-es6

1

Babel 6の時点で、babel-registerをインストールし、以下を使用する必要があります

require("babel-register");

Babel es2015プリセットも必ずインストールしてください。

1
Chiedo