Program Tip

바벨 대 바벨 코어 대 바벨 런타임

programtip 2020. 12. 5. 10:28
반응형

바벨 대 바벨 코어 대 바벨 런타임


내 노드 웹팩 프로젝트는 세 개의 바벨 라이브러리를 사용합니다. 이것들의 차이점은 무엇이며 어떻게 사용됩니까?

"dependencies": {
  "babel-runtime": "^5.8.24"
}

"dev-dependencies": {
  "babel": "^5.8.23",
  "babel-core": "^5.8.23"
}

babel-coreAPI입니다. v5의 경우 babel패키지는 CLI이며 babel-core. v6의 경우 babel-cli패키지는 CLI이며 (CLI bin 명령은 여전히 ​​있음 babel) babel패키지는 아무 작업도 수행하지 않습니다. babel-runtime이미 변형 된 코드를 지원하는 런타임 (폴리 필 및 도우미) 일 뿐이라고 생각합니다.


TL; DR 여기서 비교할 사항은 다음과 같습니다.

  1. babel (5.xx 용) 대 babel-cli + babel-core (6.xx 용 하나 선택)
  2. babel-polyfill (비 라이브러리에 사용) 대 babel-runtime + babel-plugin-transform-runtime (라이브러리에 사용)

에서 https://babeljs.io/blog/2015/10/31/setting-up-babel-6 :

바벨 패키지는 더 이상 없습니다. 이전에는 전체 컴파일러와 모든 변환에 CLI 도구가 포함되어 있었지만 이로 인해 불필요하게 큰 다운로드가 발생하고 약간 혼란 스러웠습니다. 이제 우리는 이것을 babel-cli와 babel-core라는 두 개의 개별 패키지로 분할했습니다.

npm 설치 --global babel-cli

또는

npm 설치 --save-dev babel-core

CLI에서 Babel을 사용하려면 babel-cli를 설치하거나 Node API를 사용하려면 babel-core를 설치할 수 있습니다.

babel-runtime은 전역 공간을 오염시키는 babel-polyfill과 달리 전역 공간을 오염시키지 않는 polyfill을 허용합니다. 에서 http://babeljs.io/docs/plugins/transform-runtime/ :

[babel-runtime]은 전역을 오염시키지 않고 코드를 자동으로 폴리 필합니다. (이 플러그인은 라이브러리 / 도구에서 권장됩니다)

바벨 런타임을 사용한다면

npm install --save-dev babel-plugin-transform-runtime

대부분의 경우 babel-plugin-transform-runtime을 개발 종속성 (--save-dev 사용)으로 설치하고 babel-runtime을 프로덕션 종속성 (--save 사용)으로 설치해야합니다.

변환 플러그인은 일반적으로 개발에만 사용되지만 런타임 자체는 배포 / 게시 된 코드에 따라 달라집니다.

또한 babel-runtime + babel-plugin-transform-runtime 및 babel-polyfill은 일반적으로 상호 배타적입니다. 즉, 둘 중 하나만 사용해야합니다. 여기 댓글에서 http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/ :

babel-polyfill 또는 babel-runtime을 사용해야합니다. 물론 당신이 무엇을하고 있는지 알지 못한다면 그들은 상호 배타적입니다. 그러나 그들은 본질적으로 같은 것입니다. 이들은 단지 도우미입니다. babel-polyfill은 전역 변수를 변경하여 동일한 목표를 달성하는 반면 babel-runtime은 모듈 식으로 수행합니다. 라이브러리를 개발하지 않는 한 polyfill을 사용하는 것이 좋습니다.


Babel 6에 대해 알아야 할 여섯 가지 사항은 이를 아주 잘 설명했습니다.

babel npm 패키지는 더 이상 존재하지 않습니다. 대신 Babel은 여러 패키지로 분할되었습니다.

babel-cli는 Node API를 포함하고 hook babel-polyfill을 필요로하는 babel 명령 줄 인터페이스를 포함합니다. babel-polyfill은 필요한 경우 완전한 ES2015 환경으로 설정합니다. 우발적 인 충돌을 방지하려면 다음을 제거해야합니다. package.json에서 babel, babel-core 등과 같은 이전 Babel 패키지를 제거한 다음 npm에서 제거합니다.

참고 URL : https://stackoverflow.com/questions/32544685/babel-vs-babel-core-vs-babel-runtime

반응형