Create?react?app修改webapck配置導(dǎo)入文件alias
create react app
create-react-app是 react 的官方項(xiàng)目腳手架,可以幫我們快速的搭建一個(gè) react 項(xiàng)目。了解 vue 的同學(xué)應(yīng)該知道,vue的官方腳手架是默認(rèn)支持@到src的絕對(duì)路徑引用,可以?xún)?yōu)雅高效的引用其它模塊,特別是跨目錄,深嵌套的引用。而且vue把webpack的配置文件暴露出來(lái),可以很方便的對(duì)webapck進(jìn)行個(gè)性化的配置修改。
相比之下,create react app生成的項(xiàng)目,默認(rèn)還是用相對(duì)路徑的引入,而且把webpack的配置深度集成到腳本里面,如果需要個(gè)性化的修改配置,只能通過(guò)react-scripts eject來(lái)導(dǎo)出wenpack配置,而且修改之后就只能自己維護(hù)了,一些我們不需要修改的react官方默認(rèn)配置可能就會(huì)丟失。我們可以通過(guò)以下兩個(gè)插件來(lái)優(yōu)雅的修改create react app生成的項(xiàng)目配置,以修改導(dǎo)入路徑alias為例說(shuō)明。
react app rewired
- 安裝插件
npm install react-app-rewired --save-dev
- 創(chuàng)建
config-overrides.js
/* config-overrides.js */
const path = require('path');
module.exports = {
webpack: function(config, env) {
config.resolve.alias['@'] = path.resolve(__dirname, 'src');
return config;
},
jest: function(config) {
const {
moduleNameMapper = {},
} = config;
config.moduleNameMapper = {
...moduleNameMapper,
'^@/(.*)$': '<rootDir>/src/$1',
};
return config;
}
}- 修改
react-scripts的默認(rèn)npm腳本
/* package.json */
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
}@craco/craco
- 安裝
npm i -D @craco/craco
- 創(chuàng)建
craco-config.js文件
const path = require('path');
module.exports = {
webpack: {
configure: (webpackConfig) => {
webpackConfig.resolve.alias['@'] = path.resolve(__dirname, 'src');
return webpackConfig;
},
},
jest: {
configure: (jestConfig) => {
const {
moduleNameMapper = {},
} = jestConfig;
jestConfig.moduleNameMapper = {
...moduleNameMapper,
'^@/(.*)$': '<rootDir>/src/$1',
};
return jestConfig;
},
}
};- 修改
react-scripts的默認(rèn)npm腳本
/* package.json */
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
}總結(jié)
我們可以通過(guò) react-app-rewired 和 @craco/craco 兩個(gè)插件優(yōu)雅的修改 create-react-app 生成的項(xiàng)目配置。兩個(gè)插件的使用方法都差不多,也都可以實(shí)現(xiàn)我們的需求,至于使用哪一個(gè)見(jiàn)仁見(jiàn)智。我建議是用@craco/craco,比較新,react-app-rewired最后的更新已經(jīng)是兩年前了。
以上就是Create react app修改webapck配置導(dǎo)入文件alias的詳細(xì)內(nèi)容,更多關(guān)于Create react app修改webapck的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
ReactNative 之FlatList使用及踩坑封裝總結(jié)
本篇文章主要介紹了ReactNative 之FlatList使用及踩坑封裝總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
JavaScript的React框架中的JSX語(yǔ)法學(xué)習(xí)入門(mén)教程
這篇文章主要介紹了JavaScript的React框架中的JSX語(yǔ)法學(xué)習(xí)入門(mén)教程,React是由Facebook開(kāi)發(fā)并開(kāi)源的高人氣js框架,需要的朋友可以參考下2016-03-03
React中實(shí)現(xiàn)防抖功能的兩種方式小結(jié)
這篇文章主要介紹了React中實(shí)現(xiàn)防抖功能的兩種方式小結(jié),具有很好的 參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Ant?Design?組件庫(kù)之步驟條實(shí)現(xiàn)
這篇文章主要為大家介紹了Ant?Design組件庫(kù)之步驟條實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
React?Native系列之Recyclerlistview使用詳解
這篇文章主要為大家介紹了React?Native系列之Recyclerlistview使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

