Відповіді:
Етапні попередні передумови Бабеля прирівнюються до процесу TC39 та різних станів кожної пропозиції щодо можливої зміни мови. Вони включають в себе реалізацію та поліфіли для всіх запропонованих змін на цьому етапі.
Все, що зараз Stage-0
є, - це Strawman, а не ES6. Це майбутній Javascript і абсолютно не впевнений, що він коли-небудь перетворить його в будь-яку офіційну специфікацію ECMAScript.
Будь ласка, не встановлюйтеstage-0
так, щоб воно спрацювало, не розуміючи наслідків, які це матиме.
Набір Babel, який містить лише функції ES6 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, пройшов тестування і буде частиною наступної редакції
Включає повний специфічний текст і включає плагіни, які в основному були протестовані та отримали зворотній зв'язок. Рішення завершено, і всі подальші зміни базуються на досвіді впровадження.
Подальша підтримка плагінів виконана якнайбільше. Вимоги до них задовольняються здебільшого лише поступовими змінами на шляху. Очікується, що семантика та апі завершаться. Це, швидше за все, стане частиною специфікації.
Кожен рівень інклюзивний, тоді як 4 включає 3, включає 2 і так далі ... Я сподіваюся, що це підсумок допоможе комусь у майбутньому.
Етапи представляють етапи, визначені процесом TC39, який працює з шаленими, але корисними ідеями до прийнятих стандартів, таких як ES6. Процес займає певний час, оскільки кожен кутовий випадок повинен бути обговорений, продуманий, перевірений, заповнений, ще трохи обговорений тощо. Тобто це орган, що відповідає стандартам. Мета полягає в тому, що вимова "ES6" матиме повне і повне значення, як і "ES5".
На практиці ваші вимоги до проекту можуть варіюватися від того, щоб залишатись випробуваним і правдивим, до того, щоб пограти з неймовірними мовними особливостями. Ви, мабуть, хочете почати з цих посилань:
Огляд процесу TC39 : Це включає в себе вишукану діаграму про те, що означають етапи та як функція прогресує від стадії до етапу. Нижче - огляд TC39.
Активні пропозиції : Швидкий огляд того, на якому етапі перебувають певні пропозиції. Він також включає посилання на пропозиції "Готові, неактивні" та "Етап 0". Сьогодні, квітень 2017 року, поля публічного класу перебувають на етапі 2, це означає, що він точно описаний, а рецензенти призначені, але не повністю переглянуті.
Пакет попередньо встановлених програм Babel для 3-го етапу : сторінка плагіна, що містить посилання на Git та NPM, для всіх пропозицій на етапі 3. В основному, цей плагін включає в себе колекцію пакетів, які теоретично поліфікують поточні пропозиції на етапі 3. TC39. На практиці можуть виникати помилки. Крім того, ви можете знайти подібне Аналогічно, воно посилається на сторінки плагінів для Етапу 2 і нижче. Ці сторінки будуть посилатися на пакети, що включають як пропозиції стадії 3, так і менш стабільні пропозиції.
Попередня настройка Babel 'env' : Цей набір Babel підтримує завершені пропозиції, вибираючи правильні пакети, необхідні для підтримки цих функцій у відомому середовищі. Наприклад, для локального node
виконуваного файлу потрібно менше плагінів, ніж старший браузер. Можна думати про плагін 'stage-4', який підтримує затверджені майбутні функції.
Підсумовуючи це, вам потрібно мати справу з цими функціями попереднього випуску лише тоді, коли ви їх використовуєте. Якщо вам потрібно їх використовувати, виберіть найбільшу кількість етапів, на яких є те, що вам потрібно. Якщо ви просто хочете встановити іграшку з божевільними функціями, щоб обговорити навколо водяного кулера, продовжуйте та захоплюйте етап 0.
Це найкраща відправна точка для розуміння. Що таке пресети
Уривок із посилання:
Етап 0 - Солом’яник: просто ідея, можливий плагін Babel.
Етап 1 - Пропозиція: над цим варто працювати.
Етап 2 - Проект: початкова специфікація.
Етап 3 - Кандидат: повна специфікація та початкові реалізації браузера.
Етап 4 - Завершено: буде додано до наступного щорічного випуску
Загальна картина :
preset
в термінах вавилони називається a . І кожна попередня налаштування містить плагіни різного рівня ризику.preset-0
Це означає, що у нього є плагіни для функцій, які дуже експериментальні, і тому існує високий ризик зробити його до остаточних характеристик. Це схоже на ідею, яка прийшла до розробника, що Javascript повинен мати певну особливість, і він провів певну роботу, щоб перенести його на процес пропозиції TC-39.preset-1
Він містить плагіни для ідей для функцій, прийнятих TC-39, і над ними варто попрацювати.preset-2
Плагіни для функцій, де початкова чернетка готова до цієї функції. І це продовжується ..Тож може статися, що функція на етапі 0 через деякий час досягла 2-го етапу, а згодом ще в наступному випуску Javascript.
Отже, з кожною версією цих пресетів Babel ви можете знайти в ньому різний набір плагінів. Також може статися, що функція на етапі 0 зазнала певних змін, і вона внесла зміни в те, як вона функціонує. І він досяг, скажімо, етап-2 із зовсім іншим API. Тому розробники повинні переконатися, що під час оновлення цих плагінів вони вносять необхідні зміни до свого коду.
Оригінальне запитання: "Яка різниця між babel-preset-етап-0, babel-preset-етап-1, babel-preset-етап-2 та babel-preset-етап-3", дивно, що відповідає, зосереджуючись на "різниці між TC39 етап-0, етап-1 .. термінологія "проголосують, тоді як єдиний релевантний (хоча і не точний) проголосований. Цитувати з сайту babel:
Попередньо встановлений Babel - це спільний список плагінів.
Офіційні пресети Babel Stage відстежували процес постановки TC39 для нових пропозицій синтаксису в JavaScript.
Кожна попередня установка (наприклад, етап 3, етап 2 та ін.) Включала всі плагіни для цього конкретного етапу та ті, що знаходяться над ним. Наприклад, етап-2 включав етап-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 в майбутньому?