Comments 15
Вот так просто, и без необходимости разбираться с горой новый инструментов, можно собрать фронт.
Ну как минимум с gradle и kotlin/groovy разобраться придется. Бэк не джавой единой живёт, не все бэк разработчики пишут на ней и не все бэки реализованы на джаве. Я бы озаглавил статью вроде "Frontend для Java Backend девелопера", так будет честнее что-ли)
Какие у вас планы на поддержку и развитие проекта? До полноценной замены npm ему еще очень далеко:
- Логика работы с транзитивными зависимостями не реализована. Npm умеет обрабатывать ситуации, когда модули зависят от одного пакета, но разных версий. У вас сейчас модули складываются в плоский список, но иногда они могут быть и деревом.
- В import-fix плагине код обрабатывается регулярками. Это очень ненадежно, и может сломаться, например, если где то будет import c двойными кавычками:
import "@polymer/polymer"
. Для надежной работы нужен парсер и работа с AST. - Ну и для продакшена скрипты лучше все-таки помодульно не грузить, а склеить в пачку, чтобы пользователям трафик экономить. Какие у вас есть решения для этой ситуации?
Учитывая HTML/2 и кеширование — как раз лучше для прода грузить помодульно. Но если хочется все равно склеить — можно добавить какой-нибудь плагин, например есть плагин для google closure compiler, которые еще и минификацию может сделать.
Учитывая HTML/2 и кеширование — как раз лучше для прода грузить помодульно
Несмотря на кучу презентаций, для своих собственных сайтов Google ресурсы все-таки бандлит. Кроме того, есть вот такое мнение. Еще вот здесь есть объяснение от разработчика Nginx, что не так с HTTP/2. Так что, склейка ресурсов все еще нужна.
Closure compiler занимается минификацией отдельных файлов. Перед этим нужно еще разрезолвить импорты и собрать их всех вместе. Что для этого посоветуете?
Насколько я вижу из реализации combineJs task, она просто позволяет найти и склеить все файлы по списку. А как сделать так, чтобы я указал входной файл src/index.js
, а система сборки сама проанализировала импорты и добавила @polymer/polymer
и @polymer/app-layout
, которые я использую, например?
У меня не было цели найти silver bullet, которая бы закрыла потребности абсолютно всех. Цель была показать идею, в каком направление смотреть. И разобрал я те случаи, которые считаю наиболее необходимыми, а как уже заметил выше — сборка в один, таковой для меня не является.
github.com/artfable/frontend-demo/pull/1
Но почему то у меня не получается запустить проект.
Браузер ругается:
Failed to resolve module specifier "@polymer/polymer/polymer-legacy.js". Relative references must start with either "/", "./", or "../".
Frontend для backend девелопера