답변:
Babel의 단계 사전 설정은 TC39 프로세스 및 잠재적 언어 변경에 대한 각 제안의 다른 상태와 동일합니다 . 여기에는 해당 단계에서 제안 된 모든 변경 사항에 대한 구현 및 폴리 필이 포함됩니다.
현재 ES6이 아닌Stage-0
Strawman이 있습니다. 미래의 Javascript이며 공식 ECMAScript 사양으로 만들지 확실하지 않습니다.
이 결과를 이해하지 않고 작동하도록 설정stage-0
하지 마십시오 .
ES6 기능 만 포함 된 Babel Preset은 preset-es2015
stage-0
하지만 결코 변경이나 전체적인 지원 중단으로부터 완전히 안전하지는 않습니다 ( 1 단계 이후에 철회 된 호출 생성자 제안 참조 ). 그러나 4 단계 이외의 모든 단계 (즉, 완료)에 대해서도 마찬가지입니다.
preset-es2015
와 함께 babel-preset-node6
더 나은 노드 6 이상을 실행하는 경우, 요즘.
babel-preset-env
어떤 환경을 대상으로 할 수 있습니다!
babel-preset-env
INSTEAD OF를 사용하십시오 babel-preset-es2015
. babel-preset-es2015
거의 구식입니다
대부분 다른 답변으로 정교합니다. 4 단계가 가장 안정적이며 0 단계가 가장 위험합니다. 다음은 이전 답변과 설명서의 5 단계에 대한 간략한 설명입니다. 나는 이것에 왔을 때 각 단계가 무엇인지에 대한 더 높은 수준의 분석을 기대했기 때문에 이것을 추가하고 있습니다.
ECMAScript Standard에 포함 준비 완료, 테스트 통과 및 다음 개정의 일부
전체 사양 텍스트를 포함하고 대부분 테스트 및 피드백과 함께 제공되는 플러그인을 포함합니다. 솔루션이 완성되었으며 모든 추가 변경 사항은 구현 경험을 기반으로합니다.
플러그인에 대한 추가 지원이 가능한 많이 완료되었습니다. 이에 대한 요구 사항은 대부분 점차적으로 변경 사항 만 충족합니다. 의미 및 API가 완료 될 것으로 예상됩니다. 아마도 사양의 일부가 될 것입니다.
각 레벨은 포괄적 인 반면 4는 3에 2가 포함됩니다.이 합산이 미래의 누군가를 돕기를 바랍니다.
이 단계는 TC39 프로세스에 의해 정의 된대로 단계적이지만 유용한 아이디어에서 ES6와 같은 수용 가능한 표준으로 기능을 작동시킵니다. 모든 코너 케이스에 대해 논의하고, 생각하고, 테스트하고, polyfilled하고, 더 많은 것을 논의 해야하는 등의 과정으로 인해 시간이 걸립니다. 즉, 표준 기관입니다. 목표는 "ES5"를 말하는 것과 마찬가지로 "ES6"을 말하는 것은 온전하고 완전한 의미를 갖습니다.
실제로, 프로젝트 요구 사항은 유지하기 위해 노력하는 것부터 사실에 이르기까지 매우 편리한 언어 기능을 사용하는 것이 좋습니다. 다음 링크로 시작하고 싶을 것입니다.
TC39 프로세스 개요 : 여기에는 단계의 의미와 기능이 단계마다 어떻게 진행되는지에 대한 멋진 차트가 포함되어 있습니다. 아래는 TC39의 개요입니다.
진행중인 제안서 : 특정 제안서의 단계에 대한 간단한 개요. 또한 완성 된, 비활성 및 단계 0 제안서에 대한 링크도 포함합니다. 2017 년 4 월 현재, Public Class Fields는 2 단계에 있습니다. 즉, 정확하게 설명되고 검토자가 배정되었지만 완전히 검토되지는 않았습니다.
3 단계 용 Babel 사전 설정 패키지 : 모든 3 단계 제안에 대해 Git 및 NPM에 대한 링크가있는 플러그인 페이지. 기본적으로이 플러그인은 이론적으로 TC39 3 단계의 현재 제안을 폴리 필하는 패키지 모음을 가져옵니다. 실제로 버그가 발생할 수 있습니다. 또한 비슷한 것을 찾을 수 있습니다. 마찬가지로 2 단계 이하 의 플러그인 페이지에 연결 됩니다. 해당 페이지는 3 단계 제안서와 덜 안정적인 제안서가 모두 포함 된 패키지로 연결됩니다.
Babel Preset 'env' :이 Babel 프리셋은 완성 된 제안을 지원하여 알려진 환경에서 이러한 기능을 지원하는 데 필요한 올바른 패키지를 선택합니다. 예를 들어 로컬 node
실행 파일은 이전 브라우저보다 플러그인 수가 적습니다. 승인 된 향후 기능을 지원하는 'stage-4'플러그인을 생각할 수 있습니다.
요약하면 이러한 시험판 기능을 사용하는 경우에만 처리하면됩니다. 그것들을 사용해야 할 필요가 있다면, 가장 많은 수의 스테이지를 선택하십시오. 워터 쿨러 주변에서 토론 할 수있는 미친 기능을 갖춘 장난감 설치를 원한다면 0 단계를 진행하십시오.
이것이 가장 이해하기 좋은 출발점입니다. 바벨 프리셋이란?
링크에서 발췌 :
Stage 0-Strawman : 아이디어, 가능한 Babel 플러그인.
1 단계-제안 : 작업 할 가치가 있습니다.
2 단계-초안 : 초기 사양.
3 단계-후보 : 전체 사양 및 초기 브라우저 구현.
4 단계-완료 : 다음 해 릴리스에 추가됩니다.
전체 사진 :
preset
했으며이를 babel의 용어로 불렀습니다 . 각 사전 설정에는 다양한 위험 수준의 플러그인이 포함되어 있습니다.preset-0
그것은 매우 실험적인 기능을위한 플러그인을 가지고있어서 최종 사양으로 만들 위험이 높다는 것을 의미합니다. 그것은 자바 스크립트가 특정 기능을 가져야한다는 개발자에게 나온 아이디어와 같으며, TC-39 제안 프로세스로 가져 오기 위해 몇 가지 작업을 수행했습니다.preset-1
TC-39에서 채택한 기능 아이디어를위한 플러그인이 포함되어 있으며, 작업 할 가치가 있다고 생각합니다.preset-2
기능에 대한 초기 초안이 준비된 기능을위한 플러그인. 그리고 계속 ..따라서 0 단계의 기능이 일정 시간 동안 2 단계에 도달하여 다음에 Javascript의 다음 릴리스에있게 될 수 있습니다.
따라서 이러한 Babel Preset의 각 버전마다 다른 플러그인 세트를 찾을 수 있습니다. 단계 0의 기능이 일부 변경을 거쳐 기능의 작동 방식을 변경했을 수도 있습니다. 그리고 완전히 다른 API로 stage-2라고합시다. 따라서 개발자는 이러한 플러그인을 업데이트 할 때 필요한 코드를 변경해야합니다.
원래 질문은 "babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2와 babel-preset-stage-3의 차이점은 무엇입니까?"입니다. TC39 stage-0, stage-1 .. terminology "사이에 투표"를 표시하고 유일하게 관련성이있는 (정확하지는 않지만) 다운 투표합니다. babel 사이트에서 인용하려면 :
Babel 사전 설정은 공유 가능한 플러그인 목록입니다.
공식 Babel Stage 사전 설정은 JavaScript의 새로운 구문 제안에 대한 TC39 스테이징 프로세스를 추적했습니다.
각 사전 설정 (예 : 3 단계, 2 단계 등)에는 해당 특정 단계 및 그 위에있는 모든 플러그인이 포함되어 있습니다. 예를 들어, stage-2에는 stage-3 등이 포함되었습니다.
핵심 아이디어는 '위의 아이디어'입니다. 위의 답변이 그 부분에서 매우 우수하기 때문에 후반에는 답변하지 않습니다.
나는 그것을 가지고있다. 당신은 https://babeljs.io/docs/plugins/preset-stage-0/ 을 참조 할 수 있습니다
한마디로, 가지고 preset-stage-0
있는 모든 기능을 포함하고 preset-stage-1
있으며, 가지고 preset-stage-1
있는 모든 기능 등을 포함합니다 preset-stage-2
.
낮은 자릿수가 더 강력합니다. 프로젝트에서 문제를 걱정하지 않으려면 설정하십시오 stage-0
...
stage-0
실제로 등 이 무엇인지 이해 합니까? "더 낮은 숫자가 더 강력합니다"라고 말하고 있기 때문에 나는 믿지 않습니다.
stage
에 ES6
@RGraham는 지적했다 The Babel Preset which contains only ES6 features is preset-es2015
. 감사!
babel-preset-stage-0
이르기까지, 모든 플러그인을 포함 stage-0
하는 stage-3
. 그것은 제안에 적용 할 수 있는지 여부에 관계없이 제안 된 모든 기능을 원한다는 것을 의미합니다.
stage-1
? 사용하는 것이 안전합니까?stage-1
향후 일부 기능은 더 이상 사용되지 않고 API가 변경 될 수 있습니까?