我使用 create-react-app
工具创建了一个 ReactJS 项目,并且它运行得很好,但是我找不到 webpack 的文件和配置。
create-react-app
工具如何与 webpack 协同工作?在默认安装的情况下,create-react-app
会将 webpack 配置文件放在哪里?我无法在项目文件夹中找到配置文件。
我没有创建过覆盖配置文件。我可以使用其他文章来管理配置设置,但我想找到常规的配置文件。
我使用 create-react-app
工具创建了一个 ReactJS 项目,并且它运行得很好,但是我找不到 webpack 的文件和配置。
create-react-app
工具如何与 webpack 协同工作?在默认安装的情况下,create-react-app
会将 webpack 配置文件放在哪里?我无法在项目文件夹中找到配置文件。
我没有创建过覆盖配置文件。我可以使用其他文章来管理配置设置,但我想找到常规的配置文件。
如果您想找到webpack文件和配置,请转到您的package.json文件并查找scripts
您会发现scripts对象正在使用库react-scripts
现在转到node_modules并查找react-scripts文件夹 react-script-in-node-modules
这个react-scripts/scripts和react-scripts/config文件夹包含所有的webpack配置。
node_modules/react-scripts
文件夹中:
Webpack配置:
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/config/webpack.config.js
启动脚本:
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/scripts/start.js
构建脚本:
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/scripts/build.js
测试脚本:
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/scripts/test.js
等等…
现在,CRA的目的不是为了担心这些。
来自文档:
“您无需安装或配置Webpack或Babel等工具。它们已经预配置并隐藏,以便您可以专注于编写代码。”
如果您想访问配置文件,则需要通过运行以下命令进行弹出:
ejectnpm run eject
注意:这是一个单向操作。一旦你弹出,就不能回去了!
在大多数情况下,最好不要弹出并尝试找到另一种方法让它为您工作。
如果需要覆盖某些配置选项,可以查看https://github.com/gsoft-inc/craco
许多人来到此页面的目的是为了找到webpack配置文件,以便添加自己的配置。除了运行npm run eject
之外,另一种方法是使用react-app-rewired。这允许您在不弹出的情况下覆盖webpack配置文件。
/node_modules/react-scripts/config
中找到它们。webpack.config.dev.js. //used by `npm start`
webpack.config.prod.js //used by `npm run build`
create-react-app
使用的Webpack配置位于此处:https://github.com/facebook/create-react-app/tree/master/packages/react-scripts/config
您可以在/config文件夹中找到它。
当您弹出时,会收到以下消息:
Adding /config/webpack.config.dev.js to the project
Adding /config/webpack.config.prod.js to the project
Webpack 的配置是由 react-scripts 处理的。 你可以在 node_modules react-scripts/config 中找到所有的 webpack 配置。
如果你想自定义 webpack 配置,可以参考这篇文章:customize-webpack-config
customize-webpack-config
的说明依赖于 react-app-rewired
,根据其 GitHub README,该工具大多数情况下未得到维护。 - Eponymousnode_modules
下编辑任何内容。react-app-rewired
已不再维护,且存在以下警告:
解决方案 - 使用 craco。...您现在“拥有”这些配置。 将不提供支持。请谨慎操作...
我正在使用 create-react-app
和 craco
,并且当我更新 webpack 5 时,我能够通过 craco.config.js
覆盖我的 webpack 配置:
module.exports = {
style: {
postcssOptions: {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
],
},
},
webpack: {
configure: (webpackConfig, { env, paths }) => {
// eslint-disable-next-line no-param-reassign
webpackConfig.resolve.fallback = {
fs: false,
};
return webpackConfig;
},
},
}
npm run eject
然后你会在你的项目中找到一个创建的config文件夹。你将找到你的webpack配置文件的初始化。
node_modules
中。 - vsync