react + typescript + webpack 如何設定 webpack alias

更新 發佈閱讀 7 分鐘
raw-image

前言

create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢

什麼是 alias

alias 在 webpack 設定意義叫做,檔案路徑別名系統,意思就是可以使用一種別稱,讓 webpack 抓取這個別稱找到這個檔案路徑,這篇章節教大家如何設定 webpack alias 可以不需要那麼辛苦的一直點點斜

例子

// 平常引入檔案方式
import Menu from '../../components/Menu.jsx'
// 使用 alias 之後
import Menu from '@/components/Menu.jsx'

建置步驟

建置步驟有四部,我會一步一步教大家

建立 react 專案

建立新的 react 專案並開啟專案,crate-react-app 為建立專案工具,react-demo 專案名稱,建立好之後將專案打開

create-react-app react-demo

執行 npm run eject 指令

在此專案可打開 package.json 裡面有個 scripts 部分,裡面提供了一些指令

"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test"
"eject": "react-scripts eject"
}

在這裡面可以看到 eject 這個 script,使用 npm 執行以下使令,會將 webpack 設定建置好

npm run eject

安裝 tsconfig-paths-webpack-plugin 套件

使用 npm 安裝 tsconfig-paths-webpack-plugin 套件,這個套件可以設置那些副檔可以執行 alias

npm install tsconfig-paths-webpack-plugin

接著打開 config/webpack.config.js 檔案,先將 tsconfig-paths-webpack-plugin 套件引入

const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

再往下滑到 alias 物件設定自定義檔案別名

alias: {

// Support React Native Web

// https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/

'react-native': 'react-native-web',

// Allows for better profiling with ReactDevTools

...( isEnvProductionProfile && {

'react-dom$': 'react-dom/profiling',

'scheduler/tracing':'scheduler/tracing-profiling',
}),

...(modules. webpackAliases || {}),

// 自定義絕對路徑

'@': paths.appSrc
}

在滑到 plugins 設定 tsconfig-paths-webpack-plugin 套件,設定可支援 alias 之副檔

plugins: [

// Prevents users from importing files from outside of src/ (or node_modules/).

// This often causes confusion because we only process files within src/ with babel.

// To fix this, we prevent you from importing files out of src/ -- if you'd like to,

// please link the files into your node_modules/ and let module-resolution kick in.

// Make sure your source files are compiled, as they will not be processed in any way.

new ModuleScopePlugin(paths.appSrc, [

paths.appPackageJson,

reactRefreshRuntimeEntry,

reactRefreshWebpackPluginRuntimeEntry,

babelRuntimeEntry,

babelRuntimeEntryHelpers,

babelRuntimeRegenerator,

]),

// 自定義副檔存取快取路徑
new TsconfigPathsPlugin({
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx', '.sass', '.scss', '.css']
})
]

最後設定 tsconfig.json 檔案

我們須加上 baseUrl 和 paths 這兩個物件,baseUrl 為這個專案初始路徑,paths 則是設定檔案路近別名,設定好以下就可以使用啦

"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}



留言
avatar-img
留言分享你的想法!
avatar-img
Tim Bai的沙龍
10會員
49內容數
d3.js 圖形
Tim Bai的沙龍的其他內容
2024/05/11
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
2024/05/11
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
2024/02/18
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
2024/02/18
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
2024/01/28
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
2024/01/28
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
這是一個介紹React Text Wrap Balancer套件的文章,主要內容包括套件的使用方式,常見的實作方式和一些注意事項。文章內容較長,內容大概是在介紹套件的使用方法、使用技巧和注意事項。
Thumbnail
這是一個介紹React Text Wrap Balancer套件的文章,主要內容包括套件的使用方式,常見的實作方式和一些注意事項。文章內容較長,內容大概是在介紹套件的使用方法、使用技巧和注意事項。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News