[javascript] ES6 기능이 활성화 된 상태에서 Node.js 앱을 실행하는 방법은 무엇입니까?

es6features를 사용하여 노드 앱을 실행하려면 BabelJS (이전 이름 : 6to5 ) 의 require 후크 를 사용합니다 .

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

node run.jsapp.js6 실행을 호출 합니다 . BabelJS를 설치하고 es6features 를 사용하려는 각 프로젝트에 대해 run.js 를 제공해야합니다 . 같은 전화를 선호합니다 nodejs6 app.js6. 이 시스템을 독립적으로 어떻게 구현할 수 있습니까 (Unix 및 Windows)?



답변

앱의 package.json 파일에 babel-clibabel-preset-es2015(일명 ES6) 종속성을 추가하고 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"
  }
}

이것의 한 가지 이점은 앱을 실행하는 명령이 동일하게 유지되어 다른 개발자와 작업하는 경우 도움이된다는 것입니다.


답변

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. 두 개의 디렉터리를 만듭니다.

SRC – 여기가 ES6에 writen 파일과 디렉토리를하고있다

DIST – 여기 파일은 바벨을 사용 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 디렉토리에서 watch watch 변경을 시작하고 dist로 컴파일합니다.

npm run build // src 디렉토리에서 dist로 파일을 컴파일합니다.

npm run serve // 그것은 감시 + 시작 노드 서버를하고 있으며, 모든 파일 변경시 dist 디렉토리 변경을 감시하는 nodemon을 사용하여 노드 서버를 다시 시작합니다.

9. 최종 노트

  • 서버는 dist / index.js 파일을 메인 파일로 실행합니다.
  • dist / index.js 파일은 src / index.js에서 컴파일되므로 프로젝트의 메인 파일이 있어야합니다.
  • dist 디렉토리는 git에 의해 무시되도록 추가되어야합니다 (하지만 노드 패키지 일 경우 npm에 대해서는 무시하지 마십시오)

10. 서버를 실행하고 src 디렉터리에 앱 생성을 시작합니다 .

npm run serve

II. 더 쉬운 방법 (상용구 사용 준비)

포인트가 너무 많으면 github- https: //github.com/maciejsikora/node-express-babel-boilerplate에서 전체 워킹 상용구를 사용할 수 있습니다 .


답변

–harmony 플래그와 함께 노드를 사용하여 es6 기능이있는 스크립트를 실행할 수 있습니다.


답변

당신은 설치해야 babel-register하고 babel-preset-es2015에 사용되는 사전 babel-register사용 변환하는 옵션 ES6ES5즉석 transpilation

 npm install babel-register

 npm install babel-preset-es2015

당신의 run.js 파일 :

// require babel-register and set Babel presets options to es2015
require('babel-register')({
   presets: [ 'es2015' ]
});

require("./app.js6");

주의 사항 : 지금 당신은 필요가 없습니다 .babelrc세트에 파일을 Babel presets우리가 그것을 설정 등의 옵션을 require방법


답변

  1. node -r babel-register scripts.js

이것이 최고의 솔루션입니다

  1. npx babel-node scripts.js

! Babel 노드는 종료 프로세스의 경우 잘 작동하지 않으며 kexec패키지 도이 경우에 도움이되지 않습니다 (내가 시도한대로)

두 경우 모두 .babelrc앱에 대한 사전 설정 및 플러그인을 설명 하는 것을 사용해야합니다.

npxnpm또는로 설치되지 않은 라이브러리의 실행에만 사용됩니다 yarn. 그렇지 않으면 당신이 필요 npm i -g babel-cli다음과babel-node script.js


답변

같은 전화를 선호합니다 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);
});

es6 추천 스크립트 실행 node es6 thefile.js

참조 : 공식 사용 문서


답변

바벨 6부터는 babel-register다음을 설치 하고 사용해야합니다.

require("babel-register");

babel es2015 사전 설정도 설치해야합니다.