#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 для узла, который не требует переноса.