Я более или менее слежу за официальное руководство по настройке локальной среды разработки с помощью реакции, и, похоже, он использует create-react-app, что очень много настраивает.
Теперь, если я запускаю npm run build, я получаю уменьшенную версию всего в папке build.
Однако если я запускаю npm start, версия, которую обслуживает NodeJS, похоже, не претерпевает никаких изменений. Но я не вижу эти файлы.
Так что либо:
npm start? Поскольку они кажутся неизмененными. (build никогда не изменяется там)npm run build, чтобы он делал "разработочную" сборку с неминимизированными файлами?Моя цель просто чтобы получить доступ к неминимизированной версии реагирующих скриптов.
Что касается последнего вопроса, я пробовал некоторые параметры и переменные среды, предложенные в этом вопросе, но, как видите, не получилось:
$ NODE_ENV=dev npm run build --dev --configuration=dev
> [email protected] build [...]
> react-scripts build
Creating an optimized production build...
[...]
Мой package.json имеет сценарии по умолчанию:
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Примечание: Пожалуйста, не спрашивайте, зачем я это делаю, и не пытайтесь меня убедить, что это плохо. Есть много причин, по которым я, возможно, этого хочу, например. отладка или этот конкретный вариант использования.





Чтобы изменить конфигурацию веб-пакета и создать скрипты, вам нужно либо извлечь из приложения create-react-app (я бы не рекомендовал этот шаг, так как он нарушает будущую совместимость), либо вы можете использовать такие инструменты, как rewire, чтобы переопределить некоторые настройки.
Взгляните на это https://github.com/timarney/react-app-rewired
я лично пользовался только перепрошивкой
npm i rewire --save-dev
Вот пример конфигурации, которую я создал для одного из своих проектов в прошлом, и он работал очень хорошо!
build.js
const rewire = require('rewire');
const defaults = rewire('react-scripts/scripts/build.js');
const config = defaults.__get__('config');
// Consolidate chunk files instead
config.optimization.splitChunks = {
cacheGroups: {
default: false,
},
};
// Move runtime into bundle instead of separate file
config.optimization.runtimeChunk = false;
// JS
config.output.filename = '[name].js';
// CSS. "5" is MiniCssPlugin
config.plugins[5].options.filename = '[name].css';
config.plugins[5].options.publicPath = '../';
Затем в моем package.json я изменил ссылки на скрипт npm следующим образом. (сборка узла, которая будет запускать скрипт build.js)
пакет.json
"scripts": {
"start": "react-scripts start",
"build": "node build && gulp",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Поэтому, если вы действительно хотите выйти из приложения create-react-app, все, что вам нужно сделать, это запустить
npm run-script eject
Затем вы получите новую папку со всеми конфигами, используемыми create-react-app.
Но, как я уже говорил, нет никаких причин, почему бы не использовать rewire и просто переопределить конфигурацию вместо извлечения
если поможет не забудь отметить как ответ Здоровья и удачи
Благодаря этой информации я вышел на тропу войны. Я перешла на react-app-rewired. Выполнил шаги с 1-3 по config-overrides.js и использовал операторы распространения для изменения конфигурации веб-пакета по умолчанию.
Я получил это, используя приведенный выше скрипт плюс: config.optimization.minimize = false;
В моем случае минификатор был с индексом 4.. вместо того, чтобы использовать config.plugsin[5], вам лучше всего использовать что-то вроде: const minifier = config.plugins.find((plugin) => plugin.constructor.name === "MiniCssExtractPlugin");, чтобы избежать ошибок при изменении сценария сборки приложения create react.
^ Это возвращает ноль, когда я это делаю - вы уверены, что правильно поняли имя, @uɥƃnɐʌuop? const minifier = config.plugins.find((plugin) => plugin.constructor.name === "MiniCssExtractPlugin");
@ dylanh724, нет, я не могу быть уверен, что это обычно, я просто знаю, что это сработало, когда я оставил комментарий. Вероятно, это зависит от конфигурации или могло измениться с тех пор. Я помню, что выходил из каждого конструктора плагинов, чтобы получить MiniCssExtractPlugin
следует отметить: Реакция-приложение-перемонтировано теперь "легко поддерживается" сообществом.
Почему вы не видите исходные файлы? Вот что я бы попробовал:
npm run starthttp://localhost:3000cmd+option+j откроет инструменты разработчика. Затем щелкните вкладку источники: на этой вкладке вы увидите see пакеты, созданные конфигурацией сборки реакции. Теперь вывод этих пакетов может быть не очень красивым, но все это есть.Кроме того, все параметры конфигурации сборки вашего приложения содержатся в вашем файле webpack.config.js, даже если вы используете create-react-app. Так как этот конфигурация просто инкапсулирована в модуль узла react-scripts. Так что, возможно, вы могли бы попробовать отредактировать этот файл напрямую, без извлечения: <base_path>/node_modules/react-scripts/config/webpack.config.js. Хотя вам нужно быть осторожным, чтобы не нарушить существующий параметр конфигурации. Вы, вероятно, хотите возиться с настройками source-map для производственных сборок. По крайней мере, таким образом, если вы испортите этот файл, вы всегда можете просто удалить и переустановить react-scripts и вернуться к своей первоначальной конфигурации. Это также позволит вам поиграть со своими настройками в «полубезопасной» изолированной среде. Помните, что create-react-app не творит чудес, а просто делает полезные значения по умолчанию для вашей конфигурации сборки.
Наконец, как указал @xzesstence, вы можете попробовать модуль Реакция-приложение-перемонтировано.
Надеюсь, это поможет!
Хотя все, что вы предлагаете, вероятно, технически возможно, это кажется большим обходным путем, который может сломаться, когда я обновлю модули npm или около того. И это действительно не использование инструментов (npm и т. д.) так, как они разработаны/предназначены. Экспорт через браузер также уродлив, как я, например. хочу, чтобы все файлы были в каталоге, но в браузере я могу, насколько я знаю, открывать только отдельные файлы и, возможно, вручную копировать/вставлять их, но нет... это никогда не вписывается в рабочий процесс разработчика. (тем более, что мне нужно делать это часто!)
тогда вам следует попробовать перемонтировать, и это не обходной путь, и он ничего не ломает. Вы буквально просто добавляете build.js, подобный тому, который я опубликовал, а затем изменяете конфигурацию по мере необходимости.. вы можете обновлять зависимости без каких-либо ограничений и вы никогда не потеряете свою конфигурацию. сначала я думал так же, как и вы, почему это так сложно, но это действительно просто, и есть логические причины, по которым они добавили конфигурации по умолчанию в качестве зависимостей. в целом это отличное решение, которое я действительно могу порекомендовать. я использовал его несколько раз в огромной производственной среде, просто попробуйте и посмотрите, что вы получите
Не уверен, что согласен, но я также думаю, что это личное предпочтение каждого разработчика. Нет экспорта в браузер, который вы просто используете с помощью инструментов разработчика, как они должны были использоваться для первого варианта. В этом суть инструментов разработчика, поскольку они являются частью повседневной работы каждого разработчика интерфейса, а инструменты разработчика представляют собой фантастический набор инструментов. Второй вариант — изменить конфигурацию сборки в файле webpack.config.js, чтобы получить рекомендуемые файлы каталога сборки. Хотя вы наверняка можете сломать модуль, его просто установить, чтобы он не вернулся к нормальному состоянию.
Это также зависит от того, как вы хотите использовать приложение create-react-app, поскольку оно предназначено для предоставления хороших значений по умолчанию, которые подходят для большинства случаев использования, но не для индивидуальных настроек. В create-react-app нет никакой магии, он просто предоставляет полезную структуру проекта и хорошие значения по умолчанию для конфигурации сборки. Это как бы запутывает детали этого, что хорошо/плохо, но если бы вы не использовали приложение create-react-app, вам пришлось бы настроить эти детали. Что касается варианта с библиотекой, я понимаю вашу точку зрения и не возражаю против нее, поскольку лично мне нравится иметь детальный контроль, и я бы предоставил свои собственные конфигурации сборки.
Но использование библиотеки добавляет дополнительный уровень сложности для обучения новых членов команды, поэтому вам нужно сопоставить это с наличием только рабочей конфигурации. Но, в конце концов, это личное предпочтение, и нет неправильных вариантов, пока все работает :)
Мне нужен был незапутанный код приложения React — в основном из любопытства, у меня был исходный код — при этом я должен был переписать его на Angular (создав гораздо более удобное в сопровождении приложение, 5% размера и 1% зависимостей).
Я никогда не использовал React, но обнаружил, изменив файл
<base_path>/node_modules/react-scripts/config/webpack.config.prod.js
и заменив большой элемент конфигурации оптимизации в module.exports следующим...
module.exports = {...
optimization: {
minimize: false,
splitChunks: {
chunks: 'all',
name: true
},
runtimeChunk: true
},
npm запустить сборку создал незапутанный, читаемый код, который работал, как и ожидалось, без каких-либо других модификаций. Использовал Gitbash только с командами установка нпм, npm запустить сборку и запуск нпм — просто подумал, что кому-то это может пригодиться.
Я не рекомендую это, потому что код, который вы хотите, все еще завернут в беспорядок eval webpack. Легче выбрать полезные фрагменты из исходного кода или просто перестроить приложение. В лучшем случае я увидел, что такое реакция кластера и веб-пакет.
Я использую VS2019, и вышеописанное не сработало для меня. Файла webpack.config.prod.js нет, только webpack.config.js. Я нашел ключ «оптимизация» в webpack.config.js и заменил его указанным выше, но он по-прежнему публиковал уменьшенный вывод. Спасибо в любом случае!
Использование этого до сих пор работает для меня. Возможно, спрячьте файл конфигурации, и, если он будет создан, будет более одной конфигурации. Кроме того, я строю только с помощью команд gitbash npm.
спасибо, что раскопал это! абсурдно, что библиотека не позволит вам просто переопределить это
Я знаю, что слишком поздно отвечать на этот вопрос, но попробуйте npm i -D cra-build-watch.
Я чувствую, что эта библиотека недооценена, но она просто следит за изменениями в реагирующем приложении и не пересобирает весь пакет снова и снова.
Хотя перемонтаж помогает в создании сборки, не минимизируя ее, тем не менее, он проходит весь процесс сборки снова и снова.
Файлы хранятся в памяти процесса сервера и не записываются на диск, если только вы не извлечете сценарии (или если возможно использовать такой инструмент, как «rewire») и не измените их для записи на диск с помощью параметра writeToDisk, как описано в документы Webpack DevServer.
Однако вы можете получить фактический список файлов/ссылки, перейдя к конечной точке webpack-dev-server под сервером.
Например, если вы используете URL-адрес по умолчанию на локальном хосте: 3000, используйте следующий URL-адрес, чтобы увидеть все файлы на сервере:
http://localhost:3000/webpack-dev-server
Но что вам действительно нужно, так это только index.html (который, как правило, представляет собой просто заглушку, которая загружает файлы JS) и 3 следующих файла JS, которые кажутся согласованными во всех частях create-react-app вместе с их соответствующим источником. файлы карты.
Вы можете просто щелкнуть правой кнопкой мыши ссылки на странице и сохранить их, или вы можете перейти по прямой ссылке или получить их на вкладке «Источники» Chrome Dev Tools.
Обратите внимание, что обычно для изменений кода обновляется только файл main.chunk.js, поэтому для среднего изменения кода вы можете просто получить обновленные файлы main.chunk.js и main.chunk.js.map.
КСТАТИ, как то вроде очень тяжело, у меня стоит спросил
create-react-appразработчиков, может ли это быть реализовано по умолчанию в их скриптах.