Как использовать ES6 и ES7 в моем Gruntfile

#node.js #git #gruntjs #ecmascript-6 #ecmascript-next

#node.js #мерзавец #gruntjs #ecmascript-6 #ecmascript-следующий #git

Вопрос:

Я хотел бы использовать ES6 и ES7 в моем Gruntfile. Причина в том, что я хотел бы написать задачу, которая включает в себя модуль git-repository. Как вы можете видеть из документации, модуль доступен только в ES6 и ES7, и я хотел бы интегрировать этот модуль как можно проще. Есть ли способ, которым я могу использовать ES6 и ES7 также в моем Gruntfile — что-то вроде babel grunt ? К сожалению, я ничего не нашел в Google и поэтому надеюсь, что вы сможете мне помочь.

Заранее благодарю вас! 🙂

Комментарии:

1. один из способов — записать ваш файл на es6 или es7, а затем дополнить его на es5 перед выполнением

2. Да, я знаю это, но обычно должен быть способ записывать ваши задачи в ES6, не так ли?

3. У вас уже есть набор функций ES6 (за исключением модулей ES6) в среде Node. Функции, на которые вы ссылаетесь (async / await), не стандартизированы и принадлежат так называемому ES.next.

Ответ №1:

Обычно вы можете захотеть использовать инструмент сборки для переноса, так что это проблема «кто будет создавать инструмент сборки».

Обычно общедоступный пакет в NPM не доступен только в ES.next или ES6 с набором функций, который не поддерживается Node. git-repository не является исключением. Он, безусловно, имеет перенесенный код в пакете и может использоваться без Babel.

Поскольку пакет был передан с помощью babel-plugin-transform-runtime , для его работы требуется babel-polyfill .

Документация используется async...await только в качестве примера, потому что это подходит для рабочего процесса. async функции используют обещания, в ES5 / ES6 это было бы

 require('babel-polyfill');

Repo.open('./example', { init: true })
.then(repo =>
  repo.setRemote('origin', 'https://github.com/user/example.git')
  .then(() => repo.add('--all .'))
  .then(() => repo.commit('Commit message'))
  ...
);
  

co это отличная альтернатива async...await набору функций ES6 для узла, который не требует переноса.