Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 1.95 KB

build-toggles.md

File metadata and controls

48 lines (39 loc) · 1.95 KB

Переключатели сборки

Обычно проекты JavaScript переключаются в зависимости от того, где они выполняются. Вы можете легко сделать это с помощью webpack, поскольку он поддерживает удаление бесполезного кода на основе переменных среды.

Добавьте различные сценарии в свои scripts в package.json:

"build:test": "webpack -p --config ./src/webpack.config.js",
"build:prod": "webpack -p --define process.env.NODE_ENV='\"production\"' --config ./src/webpack.config.js",

Конечно, я предполагаю, что у вас установлен npm install webpack --save-dev. Теперь вы можете запустить npm run build:test и т.д.

Использовать эту переменную тоже очень просто:

/**
 * Этот интерфейс гарантирует, что мы не пропустим добавление свойства в `prod` и `test` сборках.
 */
interface Config {
  someItem: string;
}

/**
 * Экспортируем только config.
 */
export let config: Config;

/**
 * `process.env.NODE_ENV` значение будет запущено из webpack
 *
 * Весь блок `else` будет удален в сгенерированном JavaScript.
 *  для продакшн сборки
 */
if (process.env.NODE_ENV === 'production') {
  config = {
    someItem: 'prod'
  }
  console.log('Запуск для продакшн сборки');
} else {
  config = {
    someItem: 'test'
  }
  console.log('Запуск для тестовой сборки');
}

Мы используем process.env.NODE_ENV только потому, что это договорённость во многих библиотеках JavaScript, например React.