что в доке CRA, такие пакеты как sass они устанавливают с флагом --save, хотя, по идее, пакет нужен только на стадии разработки
Умный вебпак отсекает все лишнее и эти пакеты в любом случае не попадают в бандл?
save как раз и не —save-dev
Сложно поспорить с тобой) —save установит пакет в dependencies же Собственно в этом и вопрос
написал так, как будто рассчитывал, что установит в devDependencies
Нет, это как раз меня и смущает. Почему все пакеты они ставят в dependencies, вместо дев пакетов Не думаю, что команда реакта глупая и не отличает флаги npm
Одни пакеты использовать на стадии разработки, другие в проде
И как это технически работает?
Думаю, что вебпак строит граф зависимостей, в которые попадают все импортированные компоненты и модули, их он и добавляет в бандл, остальные отсекает Верно?
если работает free shaking то так
Верно. Только в описанном тобой алгоритме ничего не написано про dev и prod зависимости
Зачем их вообще тогда разделять?
разделяют для проектов, в которых не бандлится весь код, т.е. часть модулей используется из node_modules на фронте сейчас редко так
Чтобы вызывать команды npm ci, npm audit, npm outdated и прочие с флагом --production
Благодарю за ответ Но почему же команда реакта их не делит как подобает?
Дев зависимости в devDependencies класть
Если ты поставишь sass в devDependencies и исполнишь npm ci с флагом production, то билд упадёт с ошибкой can not find module 'sass'
Понял Посмотрю ещё доку npm ради интереса
Обсуждают сегодня