ES6 модуль импорта и управления зависимостями
С использованием транспортеров уже можно использовать модули ES6. Одним из самых простых способов является использование Browserify и Babelify. Проблема у меня заключается в том, как справиться с управлением зависимостями.
В старые времена у вас просто были зависимости Бауэра. Сборка будет включать не-CDN вvendor.js и проецировать конкретные файлы вfoobar.js (или что угодно). Таким образом, вы сможете использовать полученный код в другом проекте, простоbower install foobar --save
, Если обаFoobar и ваш новый проект имел общую зависимость, которую легко разрешить с помощью плоской зависимости Bowers.
Теперь в моду ES6: скажем, у меня есть проектFoo с помощьюlodash, Структура каталогов выглядит следующим образом:
src/js/foo.js src/vendor/lodash/dist/lodash.min.js
А такжеfoo.js начинается с объявления:
import * as _ from '../../vendor/lodash/dist/lodash.min.js';
или (как хочет Browserify, поскольку Babelify переносится в CommonJS):
import * as _ from './../../vendor/lodash/dist/lodash.min.js';
Если я сейчас соберусь и опубликуюFoo проект и начать новый проектбар который используетFoo это будет моя структура каталогов.
src/js/bar.js src/vendor/foo/dist/foo.js src/vendor/lodash/dist/lodash.min.js
Но это не сработает, так как путь изFoo вlodash теперь не работает (если я правильно понимаю, что в Browserify точечная косая черта в «./blaat/file.js» относится к файлу, из которого он вызывается).
Есть ли способ импортировать без каких-либо предположений пути к файлу?
Разве нет способа указать несколько исходных корней? (т.е. в приведенном выше случае src / js и src / vendor ... ну, в идеале, вы просто хотите заявитьimport * as _ from 'lodash';
)
Я только использовал Browserify с Babelify в кли. Должен ли я использовать какой-то другой транспортер?