Dee*_*nta 9 javascript reactjs webpack create-react-app
我使用 create-react-app 创建了一个反应项目。现在我需要更新 webpack 配置,但我在任何地方都找不到该文件。我需要自己创建这个文件还是过程是什么?我是新手,并不确定如何从这里开始。
小智 12
https://www.npmjs.com/package/react-app-rewired
完整的答案是:
如何重新连接您的create-react-app项目
使用创建您的应用程序create-react-app,然后重新连接它。
react-app-rewired
使用create-react-app 2.xWebpack 4安装:Run Code Online (Sandbox Code Playgroud)npm install react-app-rewired --save-dev
对于Webpack 3create-react-app 1.x或react-scripts-ts与 Webpack 3 一起使用:
Run Code Online (Sandbox Code Playgroud)npm install react-app-rewired@1.6.2 --save-dev
config-overrides.js在根目录下创建一个文件Run Code Online (Sandbox Code Playgroud)/* config-overrides.js */ module.exports = function override(config, env) { //do stuff with the webpack config... return config; }
像这样:
+-- your-project
| +-- config-overrides.js
| +-- node_modules
| +-- package.json
| +-- public
| +-- README.md
| +-- src
Run Code Online (Sandbox Code Playgroud)
例如 :
Run Code Online (Sandbox Code Playgroud)module.exports = function override(config, env) { // New config, e.g. config.plugins.push... config.module.rules = [...config.module.rules, { test: /\.m?js/, resolve: { fullySpecified: false } } ] return config }
从:
/* 包.json */
Run Code Online (Sandbox Code Playgroud)"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }
到:
/* 包.json */
Run Code Online (Sandbox Code Playgroud)"scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test", "eject": "react-scripts eject" }
注意:请勿翻转弹出脚本的调用。对于一个项目来说,它只运行一次,之后你就可以完全控制 webpack 配置,从而不再需要react-app-rewired。没有用于重新连接弹出脚本的配置选项。
Run Code Online (Sandbox Code Playgroud)npm start
Run Code Online (Sandbox Code Playgroud)npm run build
小智 8
我通过在纱线安装和纱线构建之间运行脚本解决了这个问题。在yarn install之后,会生成webpack.config.json文件,然后立即在Node上运行修改它的脚本,然后运行构建。
我的代码:
custom.webpack.config.js
const fs = require('fs')
// WebPack.config File
const fileConfig = 'node_modules/react-scripts/config/webpack.config.js'
new Promise((resolve) => {
fs.readFile(fileConfig, 'utf8', function (err, data) {
if (err) {
return console.log(err)
}
resolve(data)
})
}).then((file) => {
let CodeAsString = "Code as String to save"
let regexCode = /YourCodeRegex}/g
let result = file.replace(regexCode, CodeAsString)
fs.writeFile(fileConfig, result, function (err) {
if (err) return console.log(err)
console.log('The webpack.config file was modifed!')
})
})
Run Code Online (Sandbox Code Playgroud)
那么,现在您是否需要编辑 package.json 以在流程中包含此代码:
"scripts": {
"prestart": "node custom.webpack.config.js",
"prebuild": "node custom.webpack.config.js",
"start": "react-scripts start",
"build": "react-scripts build"
}
Run Code Online (Sandbox Code Playgroud)
完毕!:)
小智 7
没必要跑 npm run eject
第1步
npm install react-app-rewired --save-dev
第2步
添加config-overrides.js到项目根目录。(不是 ./src)
// config-overrides.js
module.exports = function override(config, env) {
// New config, e.g. config.plugins.push...
return config
}
Run Code Online (Sandbox Code Playgroud)
第 3 步
重新启动您的应用程序。完毕
Webpack 配置由react-scripts处理。我假设您不想弹出而只想查看配置,您会在中找到它们/node_modules/react-scripts/config
webpack.config.dev.js. //used by `npm start`
webpack.config.prod.js //used by `npm run build`
Run Code Online (Sandbox Code Playgroud)
您可以使用https://www.npmjs.com/package/patch-package修改您的 webpack 配置或任何其他 node_modulepatch-package
react-scripts安装你想要的版本npm i react-scripts@5.0.0
然后进入node_modules/react-scripts/webpack/webpack.config.js. 进行您需要的更改,然后npx patch-package react-scripts
patch-package将在您的项目根目录中生成一个文件,例如patches/react-scripts+5.0.0.patch
将安装后脚本添加到package.jsonwith
"scripts": {
"postinstall": "patch-package",
...
}
Run Code Online (Sandbox Code Playgroud)
现在,每当您运行时,npm i您都会自动获得此补丁,该补丁包含在已安装的库中。
| 归档时间: |
|
| 查看次数: |
11082 次 |
| 最近记录: |