Обычно проекты 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
.