Если вы хотите отредактировать конфигурацию Webpack
приложения, созданного с помощью create-react-app
, вам нужно eject
приложению, а затем написать свои собственные файлы конфигурации Webpack
. Это может быть чрезвычайно болезненно и по существу сводит на нет(одна из) главных причин использовать create-react-app
..
Я думаю, что было бы проще всего написать скрипт, который сделает за вас gzipping, после завершения сборки.
Iсоберите это вместе очень быстро, чтобы показать, как вы можете gzip
файл с аргументами командной строки ...
Как использовать: node gzipper.js %SOURCE_FILE_PATH% %DEST_DIR_PATH%
- Например:
node gzipper.js ./build/index.js ./build
- Поддерживает относительные и абсолютные пути.
- Использует «стандартные библиотеки» - не требует дополнительных пакетов
const fs = require('fs');
const path = require('path');
const zlib = require('zlib');
const SOURCE = path.resolve(__dirname, process.argv[2]);
const DESTINATION = path.resolve(__dirname, process.argv[3]);
const SOURCE_STATS = fs.lstatSync(SOURCE);
const SOURCE_FILE_NAME = path.basename(SOURCE);
const DESTINATION_STATS = fs.lstatSync(DESTINATION);
if(!SOURCE_STATS.isFile() || !DESTINATION_STATS.isDirectory()) {
throw new Error("[ERROR]::SOURCE must be a file, DESTINATION must be a directory!");
}
const SOURCE_CONTENTS = Buffer.from(fs.readFileSync(SOURCE, 'utf8'));
zlib.gzip(SOURCE_CONTENTS, (error, result) => {
if(error) throw error;
const OUT_PATH = `${DESTINATION}\\${SOURCE_FILE_NAME}.gz`;
fs.writeFileSync(OUT_PATH, result);
});
Вы можете добавитьсценарий к вашему package.json
файлу, что-то вроде gzip
, которое вы добавляете в сценарий npm build
(или yarn build
), поэтому он запускается после сборки ..:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build && npm run gzip",
"gzip": "node gzipper.js ./build/index.js ./build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},