НПМ и Bower, так и Browserify и залпом и хрюкать и Webpack
я пытаюсь обобщить свои знания о самых популярных менеджерах пакетов JavaScript, bundlers и task runners. Пожалуйста, поправьте меня, если я ошибаюсь:
npm&bowerменеджеры пакетов. Они просто загружают зависимости и не знают, как строить проекты самостоятельно. То, что они знают, называетсяwebpack/gulp/gruntпосле загрузки всех зависимостей.
bowerкакnpm, но строит сплющенные деревья зависимостей (в отличие отnpmЧто делать это рекурсивно). Значитnpmизвлекает зависимости для каждой зависимости (может извлекать то же самое несколько раз), в то время какbowerожидает, что вы вручную включите суб-зависимости. Иногдаbowerиnpmиспользуются вместе для front-end и back-end соответственно (так как каждый мегабайт может иметь значение на front-end).
gruntиgulpявляются ли бегуны задач автоматизировать все, что может быть автоматизировано (т. е. компилировать CSS/Sass, оптимизировать изображения, сделать расслоить и минимизировать / транспилировать его).
gruntиgulp(какmavenиgradleили настройки и код). Grunt основан на настройке отдельных независимых задач, каждая задача открывает/обрабатывает/закрывает файл. Gulp требует меньшего количества кода и основан на потоках узлов, что позволяет ему создавать цепочки трубопроводов (без повторного открытия одного и того же файла) и делает его быстрее.
webpack(webpack-dev-server) - для меня это бегун задач с горячей перезагрузкой изменений, который позволяет вам чтобы забыть обо всех наблюдателях JS/CSS.
npm/bower+ плагины могут заменить бегунов задач. Их способности часто пересекаются, поэтому есть разные последствия, если вам нужно использоватьgulp/gruntovernpm+ Плагины. Но Task runners определенно лучше подходят для сложных задач (например, "на каждой сборке создайте пакет, транспилируйте из ES6 в ES5, запустите его во всех эмуляторах браузеров, сделайте скриншоты и разверните в dropbox через ftp").
browserifyпозволяет упаковывать модули узлов для браузеров.browserifyvsnode' srequireна самом деле AMD vs CommonJS.
вопросы:
что этоwebpack&webpack-dev-server? официальная документация говорит, что это модуль bundler, но для меня это просто бегун задач. какая разница?
где бы вы использоватьbrowserify? Не можем ли мы сделать то же самое с node / ES6 импорт?
- когда вы используете
gulp/gruntovernpm+ Плагины? - пожалуйста, приведите примеры, когда вам нужно использовать комбинацию
Comments