Ваш друг правильно подсказал вам внести изменения в конфигурацию webpack и скрипты запуска в package.json, чтобы лучше управлять режимами сборки
java
// webpack.config.js
const isDev = process.env.NODE_ENV === 'development';
module.exports = {
// Настройки dev сервера
devServer: {
static: {
directory: path.join(__dirname, 'dist'),
},
port: 9000,
historyApiFallback: isDev,
hot: isDev,
},
};
Здесь isDev будет true, если NODE_ENV установлено в 'development', и false в противном случае. Это позволяет вам устанавливать различное поведение вашего приложения в зависимости от режима сборки.
json
// package.json
"scripts": {
"prod": "cross-env NODE_ENV=production webpack --mode=production",
"dev": "cross-env NODE_ENV=development webpack serve --mode=development"
}
Здесь ваши скрипты для запуска в различных режимах сборки используют cross-env, чтобы установить значение переменной NODE_ENV в соответствии с выбранным режимом. Затем webpack использует это значение для определения режима сборки.
Таким образом, настройка NODE_ENV и isDev позволяет вам динамически управлять поведением вашего приложения в зависимости от текущего режима сборки (разработка или продакшн). Это делает ваш процесс разработки более удобным и гибким, позволяя использовать различные конфигурации в зависимости от потребностей.
Союз Здравых СилПрофи (517)
8 месяцев назад
"Здесь isDev будет true, если NODE_ENV установлено в 'development', и false в противном случае" - а проверка на то, во что сейчас установлено NODE_ENV(true/false) как я понял проходит в package.json, в scripts?
И тут такой принцип, что в вебпак-конфиге: historyApiFallback и hot будут установлены в TRUE только в дев-режиме, я так понимаю? А на production - они будут в false, то бишь не будут работать?
А если бы я там поставил просто true для них вместо isDev, то они бы работали в обоих режимах, так? Я просто не пойму, почему эти методы должны работать только в дев-режиме, а не на обоих
Мне знающий человек сказал настроить их так:
Ну и вроде в дев-режиме теперь работает как надо, но я не могу понять что такое NODE_ENV и isDev. Я читал что NODE_ENV "переменная окружения", но не понял что это(
cross-env это типо библ. для того чтобы эта переменная на всех ОС правильно задавалась.
Ну в общем сам вопрос: что значат эти NODE_ENV, isDev, что они делают, и можно ли как то задать режимы попроще?
Node.js ещё не знаю, поэтому не понимаю что тут для чего