Vladimir
ну по логике - откуда докер может знать, что npm install зависит от package.json?
Evgeny
А он и не должен
Evgeny
Ты ему говоришь
Vladimir
каким образом?
Evgeny
а что важно?
Содержимое. Хеш от тара
Evgeny
каким образом?
Когда делаешь докер файл
Vladimir
ну, конкретнее)
Evgeny
Сначала копируешь пакадж, потом делаешь npm i
Evgeny
И докер выполняет инсталл только если поменялся пакадж
Vladimir
ну это же неправильно. Что если я хочу последнии версии пакетов
Evgeny
Правильно. Хочешь последние версии пакетов - меняешь пакадж. Или ты не фиксируешь версии? Рекомендую начать
Vladimir
это частный случай, я говорю про то что докер много на себя берет
Evgeny
Например еще когда?
Vladimir
допустим я кулом выкачиваю что то из интернета
Vladimir
курлом
Vladimir
и хочу что всегда была последняя версия
Evgeny
Это значит - что-то делается не так
Vladimir
ну если докер просто кэширует в такой ситуации - то он не прав
Evgeny
Почему?
Vladimir
чтобы кэшировать, нужно иметь хоть какие то основания полагать, что релузьтат не изменился
Evgeny
Есть описанные правила кеширования. Там указано - либо команда либо состав файлы
Vladimir
в общем ясно, докер исходит из того что результат зависит от файлов в последнем ADD
Vladimir
примерно как make
Vladimir
но в make есть phony, в Dockerfile видимо нет такого
Evgeny
Докер каждый раз ориентируется на команду. Если она не менялась - берем кеш. Если менялась - ее и все дальше инвалидируем
Vladimir
https://github.com/docker/docker/issues/1996
Evgeny
Можно явно передать рандом
Denis
Сегодня ребята из Cloudflare посоветовали выделить node_modules в отдельный image
Denis
приехали
Evgeny
Иногда допустимо
Алексей
так.. в плане идеи генерации - можно node_module версионировать ( тупо убрать из .gitignore )
Denis
ох
Vladimir
это сработает, но явно сделает жизнь сложнее
Vladimir
я про отдельный image
Vladimir
node_modules в гите - норм
Evgeny
Нодмодули в отдельном имадже нужны для ускорения сборки и уменьшении трафика
Evgeny
В гит их, имхо, моветон
Vladimir
почему? наоборот, просто и надежно
Evgeny
Имхо лучше делать слой пресборки
Vladimir
есть только проблема с бинарниками
Vladimir
их таки все равно нужно пересобирать
Алексей
В гит их, имхо, моветон
Версионирование Bundle-ов - старая давно работающая техника
Vladimir
ну если dev и prod на одной os и архитектуре - то не нужно
Evgeny
ну если dev и prod на одной os и архитектуре - то не нужно
Ну да, хорошая идея - держать билд сервер таким же как прод
Vladimir
ну npm install делает дев, на дев машине
Vladimir
и в гит кладет бинарники
Vladimir
это плохо - в остальном норм
Denis
Ну да, хорошая идея - держать билд сервер таким же как прод
У нас это Kuberenetes-кластер, так что удовлетворяет условию)
Vladimir
для ci?
Evgeny
ну npm install делает дев, на дев машине
Нет. Это делает билдсервер
Vladimir
я говорю про node_modules в гите
Evgeny
И опять плохо - а сасс например? Он ж зависит от архитектуры
Vladimir
я и говорю, это единственная проблема
Vladimir
при билде нужно собирать нативные модули
Denis
для ci?
Для проекта :)
Evgeny
Злоо
Artur
А чего билд зависимостей не собирать в buildDependencies?
Artur
Уж всяко лучше, чем в гит кидать
Denis
Это что?)
Дима
А чего билд зависимостей не собирать в buildDependencies?
Речь шла о том, что эти зависимости должны были бы попасть в эту категорию, если бы она существовала. npm не знает никаких категорий, кроме depends и devDepends
Artur
Это то, что попадает в пакет когда он пакуется перед публикацией в реестре.
Artur
Но можно в принципе не публиковать, а собирать отдельный тар.
Artur
Получится такой пакет-пакетов, как у всех на кухнях есть)
Дима
Не совсем понял. В npm есть 5 типов зависимостей.
Ну остальные либо изначально специфические, либо бесполезные в данном случае
Artur
Ладно, завтра поэкспериментирую
Дима
Можно в scripts прописать что то типа "prebuild": "npm install webpack" И собрать всё, что надо с помощью node-gyp
Дима
npm default "scripts":{"preinstall": "node-gyp rebuild"} If there is a binding.gyp file in the root of your package, npm will default the preinstall command to compile using node-gyp
Дима
@vkurchatkin 👆
Vladimir
https://github.com/babel/phabricator-to-github
Roman
йау
Roman
есть вопрос
Roman
существует ли адекватный sanitizer жс кода?
Roman
задача - чекать есть ли во входящем жсе методы поста и гета
Roman
редиректов
Roman
или еще чего нибудь
Aleksey
regex? :D