創(chuàng)建自定義Create React App Template

Create React App(簡(jiǎn)稱CRA)是一個(gè)官方支持的創(chuàng)建 React 單頁(yè)應(yīng)用程序的方法访惜。它提供了一個(gè)快速開始搭建項(xiàng)目腳手架的方法。但是官方只提供了 cra-templatecra-template-typescript 這兩個(gè)基本的模版海蔽。它不包含 React Router, React Redux, linter, prettier等我們開發(fā)中經(jīng)常用到的依賴以及配置,然后我們?cè)陂_始一個(gè)項(xiàng)目的時(shí)候不得不一個(gè)個(gè)地安裝抹竹,配置這些依賴鸯屿,非常浪費(fèi)時(shí)間。但是現(xiàn)在我們可以通過自定義CRA tempate來(lái)解決這個(gè)問題了凶掰。當(dāng)然你也可以在 npm 官網(wǎng)上通過搜索“cra-template”來(lái)找到很多優(yōu)秀的CRA template來(lái)供自己使用。

創(chuàng)建自己的CRA template

  1. 新建項(xiàng)目(在這個(gè)例子中蜈亩,假定我們的模版名稱為spring)
yarn create react-app cra-template-spring
  1. 添加你需要的任何依賴以及配置
  2. 創(chuàng)建模版

3.1 創(chuàng)建 template/ 目錄

mkdir template/

3.2 將根目錄的.gitignore文件復(fù)制到 template/目錄, 注意放到template目錄下的gitignore文件不要以“.”開頭

cp .gitignore template/gitignore

3.3 在根目錄創(chuàng)建template.json懦窘,注意是根目錄,這是一個(gè)容易出錯(cuò)的地方稚配,放到template目錄下的話是無(wú)效的畅涂。

{
  "package": {
    "dependencies": {
      "@ant-design/icons": "^4.6.2",
      "@reduxjs/toolkit": "^1.5.1",
      "@testing-library/jest-dom": "^5.11.4",
      "@testing-library/react": "^11.1.0",
      "@testing-library/user-event": "^12.1.10",
      "@types/jest": "^26.0.22",
      "@types/node": "^14.14.37",
      "@types/react": "^17.0.3",
      "@types/react-dom": "^17.0.3",
      "antd": "^4.15.0",
      "babel-plugin-import": "^1.13.3",
      "less": "^3.11.1",
      "less-loader": "^6.1.0",
      "react": "^17.0.2",
      "react-dom": "^17.0.2",
      "react-redux": "^7.2.3",
      "react-router-dom": "^5.2.0",
      "react-scripts": "4.0.3",
      "redux": "^4.0.5",
      "redux-logger": "^3.0.6",
      "redux-thunk": "^2.3.0",
      "typescript": "^4.2.3",
      "web-vitals": "^1.0.1"
    },
    "scripts": {
      "start": "react-app-rewired start",
      "build": "react-app-rewired build",
      "test": "react-app-rewired test",
      "eject": "react-scripts eject"
    },
    "devDependencies": {
      "@types/react-redux": "^7.1.16",
      "@types/react-router-dom": "^5.1.7",
      "@types/redux-logger": "^3.0.8",
      "customize-cra": "^1.0.0",
      "react-app-rewired": "^2.1.8"
    }
  }
}

3.4 將 src 和 public 目錄 復(fù)制到 template目錄下

cp -a ./src/. template/src && cp -a ./public/. template/public

3.5 將其他根目錄下的各種配置文件復(fù)制到 template目錄,如 tsconfig.json, paths.json等

修改項(xiàng)目配置道川,準(zhǔn)備發(fā)布到npm

  1. 在package.json中添加 license, author, description, keywords, repository等meta信息
  2. 在package.json中添加 main, files項(xiàng)
{
  "main": "template.json",
  "files": [
    "template",
    "template.json"
  ]
}
  1. 你還可以添加一些自動(dòng)化的腳本來(lái)方便以后模版的更新和升級(jí)
{
    "clean-files": "rm -rf ./template/public ./template/src",
    "copy-files": "cp -a ./src/. template/src && cp -a ./public/. template/public",
    "prepublishOnly": "yarn clean-files && yarn copy-files"
}

在本地測(cè)試你的CRA tempate

yarn create-react-app my-app --template file:../path/to/your/template/

發(fā)布到NPM

將包到npm的需要有npm賬號(hào)午衰,你可以自己注冊(cè)一個(gè)
如果已經(jīng)有npm賬號(hào)立宜,先登陸,然后發(fā)布即可

npm login
npm publish --access public

等你的CRA tempate發(fā)布成功后臊岸,就可以嘗試用它創(chuàng)建一個(gè)新的項(xiàng)目了橙数,

npx create-react-app my-app --template spring
#or
yarn create react-app my-app --template spring

最后安利一個(gè)作者本人創(chuàng)建的CRA template: Spring
它包含了 react-app-rewired, antd, react-router-dom, redux, typescript, redux-thunk, redux-logger等依賴和配置,可以用于快速開始一個(gè)小的react項(xiàng)目帅戒。

附參考鏈接

Create React App
How to create custom Create React App (CRA) templates

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灯帮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逻住,更是在濱河造成了極大的恐慌钟哥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞎访,死亡現(xiàn)場(chǎng)離奇詭異怖糊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)册舞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門圈膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸦采,你說我怎么就攤上這事宾巍。” “怎么了渔伯?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵顶霞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我锣吼,道長(zhǎng)选浑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任玄叠,我火速辦了婚禮古徒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘读恃。我一直安慰自己隧膘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布寺惫。 她就那樣靜靜地躺著疹吃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪西雀。 梳的紋絲不亂的頭發(fā)上萨驶,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音艇肴,去河邊找鬼腔呜。 笑死叁温,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的核畴。 我是一名探鬼主播膝但,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膛檀!你這毒婦竟也來(lái)了锰镀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咖刃,失蹤者是張志新(化名)和其女友劉穎泳炉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚎杨,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡花鹅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枫浙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨肃。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖箩帚,靈堂內(nèi)的尸體忽然破棺而出真友,到底是詐尸還是另有隱情,我是刑警寧澤紧帕,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布盔然,位于F島的核電站,受9級(jí)特大地震影響是嗜,放射性物質(zhì)發(fā)生泄漏愈案。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一鹅搪、第九天 我趴在偏房一處隱蔽的房頂上張望站绪。 院中可真熱鬧,春花似錦丽柿、人聲如沸恢准。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顷歌。三九已至,卻和暖如春幔睬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芹扭。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工麻顶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赦抖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓辅肾,卻偏偏與公主長(zhǎng)得像队萤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矫钓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容