国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

前端工程化小記

來源: 責(zé)編: 時(shí)間:2023-09-18 21:41:19 425觀看
導(dǎo)讀1.引言工作中,我們是否經(jīng)常遇到以下情況:我們是否發(fā)現(xiàn)接手其他同事的代碼非常痛苦,比如:縮進(jìn),換行等等代碼風(fēng)格這些一度讓人渾身難受某個(gè)同事提了經(jīng)常提語法報(bào)錯的代碼,語法報(bào)錯只能用肉眼一個(gè)個(gè)review代碼,完全沒有提示同事

1.引言

工作中,我們是否經(jīng)常遇到以下情況:zjX28資訊網(wǎng)——每日最新資訊28at.com

  • 我們是否發(fā)現(xiàn)接手其他同事的代碼非常痛苦,比如:縮進(jìn),換行等等代碼風(fēng)格這些一度讓人渾身難受
  • 某個(gè)同事提了經(jīng)常提語法報(bào)錯的代碼,語法報(bào)錯只能用肉眼一個(gè)個(gè)review代碼,完全沒有提示
  • 同事每個(gè)人寫的commit風(fēng)格都不一樣,也有偷懶的,一個(gè)單詞搞定的,但是也不描述本次更改是屬于什么范疇?比如:是加功能?是代碼優(yōu)化?還是修復(fù)bug?還是修改webpack配置?還是修改工具鏈等等
  • 如果是monorepo的倉庫,里面有很多項(xiàng)目,commit一頓亂寫,完全不管改的哪個(gè)項(xiàng)目,是不是很崩潰?

關(guān)于代碼語法檢查、代碼格式化、commit注釋規(guī)范、代碼編譯等等這些工作量繁雜且巨大的苦力活,除非你不想把人當(dāng)馬用,那還是交給機(jī)器去做,是嗎?zjX28資訊網(wǎng)——每日最新資訊28at.com

前端領(lǐng)域早已不是以前的純js、jquery 時(shí)代,模塊化、工程化也成為了前端領(lǐng)域的追求,這樣才能保證前端程序的可讀性,可維護(hù)性,健壯性等等zjX28資訊網(wǎng)——每日最新資訊28at.com

2.背景

前端工程化已經(jīng)發(fā)展了有些年月了,大量提高效率的包如雨后春筍般涌出。所以作為小前端的我也忍不住去探索一番,畢竟誰也不想瘋狂加班,被當(dāng)作馬使,也想下早班開啟簡單開心的生活zjX28資訊網(wǎng)——每日最新資訊28at.com

本文旨在記錄探索前端基本工程化的實(shí)踐過程,方便自己以后翻閱,請輕噴(ps: 這篇文章聚焦代碼檢查,代碼美化,commit規(guī)范,其中有借助chatgpt)zjX28資訊網(wǎng)——每日最新資訊28at.com

項(xiàng)目基本技術(shù)選型為:react + ts,所以將以此為基礎(chǔ)展開前端工程化基本配置zjX28資訊網(wǎng)——每日最新資訊28at.com

3.Git鉤子:husky

husky 是一個(gè)用于在 Git 鉤子中運(yùn)行命令的工具,它能夠在代碼提交或推送等特定事件中自動觸發(fā)指定的命令。通過 husky,你可以在代碼提交前、提交后、推送前等場景下運(yùn)行腳本,以進(jìn)行代碼風(fēng)格檢查、單元測試、構(gòu)建等操作zjX28資訊網(wǎng)——每日最新資訊28at.com

安裝如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 下載husky的npm包
  2. 初始化husky
  3. 配置npm install時(shí)自動初始化husky

用快捷命令完成上面的安裝步驟zjX28資訊網(wǎng)——每日最新資訊28at.com

# npmnpx husky-init && npm install# yarnyarn dlx husky-init --yarn2 && yarn#pnpmpnpm dlx husky-init && pnpm install

4.文件過濾工具:lint-staged

lint-staged是一個(gè)用于在 git 暫存文件上運(yùn)行指定命令的工具。它可以幫助你在提交代碼前,只對即將提交的文件進(jìn)行代碼風(fēng)格檢查、格式化、靜態(tài)分析等操作,以便在代碼提交之前保持代碼的質(zhì)量和一致性zjX28資訊網(wǎng)——每日最新資訊28at.com

基本使用如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 安裝依賴
# npmnpm install lint-staged --save-dev#yarn yarn add lint-staged --dev#pnpmpnpm add lint-staged --save-dev
  1. 修改package.json文件如下:
{  "scripts": {    "lint": "eslint src"  },  "lint-staged": {    "src/**/*.{ts,tsx}": [      "npm run lint", // 運(yùn)行自定義的 lint 腳本      "git add" // 添加修復(fù)后的文件到暫存區(qū)    ]  }}

以上配置表示:對于 src 目錄下的所有后綴為 ts 和 tsx 的文件,在提交前會運(yùn)行 npm run lint 命令來進(jìn)行語法檢查,然后將修復(fù)后的文件添加到暫存區(qū)zjX28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際開發(fā)時(shí),lint-staged 一般會配合 pre-commit 鉤子進(jìn)行 commit 之前的動作,所以我們替換 pre-commit 鉤子內(nèi)容如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

#!/usr/bin/env sh. "$(dirname -- "$0")/_/husky.sh"npx lint-staged

5.commit注釋規(guī)范:commitlint

commitlint 是一個(gè)用于規(guī)范化 Git 提交消息的工具。它幫助團(tuán)隊(duì)確保每個(gè)提交消息都符合統(tǒng)一的規(guī)范,以提高代碼倉庫的可讀性和可維護(hù)性zjX28資訊網(wǎng)——每日最新資訊28at.com

這里直接展示commitlint搭配husky一起使用zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 安裝相關(guān)依賴
# npm  npm install @commitlint/cli @commitlint/config-conventional --save-dev  # yarn  yarn add @commitlint/cli @commitlint/config-conventional --dev  # pnpm  pnpm add @commitlint/cli @commitlint/config-conventional --save-dev
  1. 使用 husky 增加 commit-msg 鉤子
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
  1. 在package.json文件里面commitlint信息,默認(rèn)使用commitlint提供的11注釋類型(ps: 你可以自定義,比如下方的ui、version)
{  "commitlint": {    "extends": [      "@commitlint/config-conventional"    ],    "rules": {      "type-enum": [        2,        "always",        [          "build",          "chore",          "ci",          "docs",          "feat",          "fix",          "perf",          "refactor",          "revert",          "style",          "test",          "ui",          "version"        ]      ]    }  }}

commitlint提供的11注釋類型解釋如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  • build: 編譯相關(guān)的修改, 例如:發(fā)布版本、項(xiàng)目構(gòu)建工具改動等(例如:glup、rollup、webpack、vite、turbo等工具)
  • chore: 雜項(xiàng)修改(例如:改變構(gòu)建流程、增加依賴庫等)
  • ci: 持續(xù)集成相關(guān)修改(例如: github-action、gitlab-ci/cd等)
  • docs: 文檔修改
  • feat: 新增功能
  • fix: 修復(fù)bug
  • perf: 優(yōu)化(例如: 提升性能、體驗(yàn)等)
  • refactor: 代碼重構(gòu)
  • revert: 回滾版本
  • style: 代碼格式修改
  • test: 測試用例修改

6.代碼檢查

代碼檢查借助了eslint, typescript-eslintzjX28資訊網(wǎng)——每日最新資訊28at.com

eslint是一個(gè)用于檢查和修復(fù) JavaScript 代碼錯誤、風(fēng)格和質(zhì)量問題的工具。它可以幫助開發(fā)人員和團(tuán)隊(duì)在編碼過程中遵循一致的編碼規(guī)范,提高代碼可讀性、可維護(hù)性和質(zhì)量zjX28資訊網(wǎng)——每日最新資訊28at.com

typescript-eslint是一個(gè)用于對 TypeScript 代碼進(jìn)行檢查和修復(fù)的工具。它基于eslint,提供了一套規(guī)則和插件,可以檢查和修復(fù) TypeScript 代碼中的錯誤、風(fēng)格和質(zhì)量問題zjX28資訊網(wǎng)——每日最新資訊28at.com

綜上所訴,需要開發(fā)環(huán)境下安裝如下包:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. eslint
  2. eslint-plugin-react-hooks
  3. eslint-plugin-react-refresh
  4. @typescript-eslint/parser
  5. @typescript-eslint/eslint-plugin
# npmnpm install eslint eslint-plugin-react-hooks eslint-plugin-react-refresh @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev# yarnyarn add eslint eslint-plugin-react-hooks eslint-plugin-react-refresh @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev# pnpmpnpm add eslint eslint-plugin-react-hooks eslint-plugin-react-refresh @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev

eslint基本使用步驟如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 安裝eslint:在項(xiàng)目根目錄下運(yùn)行命令 npm install eslint --save-dev 或 yarn add eslint --dev 或 pnpm add eslint --save-dev,將eslint作為開發(fā)依賴安裝到項(xiàng)目中
  2. 初始化eslint配置文件:在項(xiàng)目根目錄下運(yùn)行命令 eslint --init,根據(jù)提示選擇配置選項(xiàng),配置文件(通常為.eslintrc或.eslintrc.json)將會自動生成
  3. 添加規(guī)則和插件:在生成的配置文件中,可以根據(jù)項(xiàng)目需要添加或修改規(guī)則,以及引入需要的插件
  4. 運(yùn)行eslint:在命令行中運(yùn)行 eslint yourfile.js 或 eslint . ,其中yourfile.js為需要檢查的文件名或目錄。eslint將會根據(jù)配置文件對代碼進(jìn)行檢查,并輸出錯誤或警告信息
  5. 自動修復(fù):運(yùn)行 eslint --fix yourfile.js 或 eslint --fix . 可以嘗試自動修復(fù)一部分可修復(fù)的問題

typescript-eslint基本使用步驟如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 安裝typescript-esLint:在項(xiàng)目根目錄下運(yùn)行以下命令
#npm npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev# yarnyarn add @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev#pnpmpnpm add @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
  1. 配置eslint和@typescript-eslint插件:在生成的eslint配置文件中,需要指定解析器為@typescript-eslint/parser,并使用@typescript-eslint/eslint-plugin提供的規(guī)則和插件

eslint配置文件如下(以.eslintrc為例):zjX28資訊網(wǎng)——每日最新資訊28at.com

module.exports = {  root: true,  env: { browser: true, es2020: true },  extends: [    'eslint:recommended',    'plugin:@typescript-eslint/recommended',    'plugin:react-hooks/recommended',  ],  ignorePatterns: ['dist', '.eslintrc.cjs'],  parser: '@typescript-eslint/parser',  plugins: ['react-refresh'],  rules: {    'react-refresh/only-export-components': [      'warn',      { allowConstantExport: true },    ],    '@typescript-eslint/ban-ts-comment': 'off'  }}

以下為結(jié)合 lint-staged 配置的代碼檢查命令:zjX28資訊網(wǎng)——每日最新資訊28at.com

{  "scripts": {    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",    "lint:fix": "eslint . --ext ts,tsx --fix",  },  "lint-staged": {    "*.(ts|tsx)": [      "eslint --quiet"    ]  }}

7.代碼美化:prettier

prettier是一個(gè)代碼格式化工具,它可以自動調(diào)整代碼的格式,使其符合統(tǒng)一的風(fēng)格規(guī)范zjX28資訊網(wǎng)——每日最新資訊28at.com

基本使用如下:zjX28資訊網(wǎng)——每日最新資訊28at.com

  1. 安裝依賴
# npm npm install prettier --save-dev# yarnyarn add prettier --dev#pnpmpnpm add prettier --save-dev
  1. 配置prettier,可以使用 .prettierrc 文件或 package.json 文件中的 prettier 字段,下面以 package.json 為例:
{  "prettier": {    "trailingComma": "all",    "arrowParens": "always",    "printWidth": 120  }}

實(shí)際應(yīng)用時(shí)會在 commit 之前進(jìn)行美化代碼,以下為結(jié)合 lint-staged 配置的代碼檢查+代碼美化命令:zjX28資訊網(wǎng)——每日最新資訊28at.com

{  "prettier": {    "trailingComma": "all",    "arrowParens": "always",    "printWidth": 120  },  "lint-staged": {    "*.(ts|tsx)": [      "eslint --quiet"    ],    "*.(ts|tsx|json|html)": [      "prettier --write"    ]  }}


zjX28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10452-0.html前端工程化小記

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Serverless vs Containers:哪個(gè)適合您的業(yè)務(wù)?

下一篇: 算法和數(shù)據(jù)結(jié)構(gòu):解析與應(yīng)用

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機(jī)基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 石頭自清潔掃拖機(jī)器人G10S評測:多年黑科技集大成之作 懶人終極福音

    科技圈經(jīng)常能看到一個(gè)詞叫“縫合怪”,用來形容那些把好多功能或者外觀結(jié)合在一起的產(chǎn)品,通常這樣的詞是貶義詞,但如果真的是產(chǎn)品縫合的好、縫合的實(shí)用的話,那它就成了中性詞,今
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們在日常工作和業(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動處理這些審批流程可能會導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營,這意味著騰訊音樂長音頻業(yè)務(wù)走向消亡。騰訊在長音頻領(lǐng)域還在摸索。為
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來源:價(jià)值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業(yè)內(nèi)一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災(zāi)

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災(zāi)。攜手抗災(zāi),京冀安康!以下為公告原文
  • 機(jī)構(gòu)稱Q2全球智能手機(jī)出貨量同比下滑11% 蘋果份額依舊第2

    7月20日消息,據(jù)外媒報(bào)道,研究機(jī)構(gòu)的報(bào)告顯示,由于需求下滑,今年二季度全球智能手機(jī)的出貨量,同比下滑了11%,三星、蘋果等主要廠商的銷量,較去年同期均有下
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
亚洲高清网站| 在线中文字幕一区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲综合偷拍欧美一区色| 亚洲视频免费看| ...xxx性欧美| 专区另类欧美日韩| 亚洲区小说区图片区qvod| 亚洲欧洲制服丝袜| 亚洲小说春色综合另类电影| 亚洲综合色婷婷| 亚洲主播在线观看| 三级久久三级久久久| 麻豆精品国产传媒mv男同| 精品亚洲成a人| 国产91在线观看丝袜| 不卡av在线网| 国语精品一区| 久久狠狠一本精品综合网| 91精品91久久久中77777| 欧美日韩精品电影| 精品国产制服丝袜高跟| 国产欧美va欧美不卡在线| 亚洲色图制服丝袜| 偷拍一区二区三区四区| 久草中文综合在线| 波多野结衣亚洲一区| 亚洲国产精品日韩| 欧美丝袜自拍制服另类| 精品国产3级a| 亚洲欧美激情小说另类| 青青草精品视频| jvid福利写真一区二区三区| 极品日韩av| 欧美日韩美少妇| 久久久久久久国产精品影院| 最近中文字幕一区二区三区| 麻豆精品精品国产自在97香蕉| 国产91对白在线观看九色| 国产精品magnet| 日本道免费精品一区二区三区| 日韩精品最新网址| 亚洲精品免费在线| 国产精品一区二区三区99| 国产精品v欧美精品v日韩精品| 久久久精品性| 久久午夜免费电影| 天堂在线亚洲视频| 91麻豆国产在线观看| 日韩一级成人av| 久久在线观看免费| 日韩专区欧美专区| 午夜精品婷婷| 91高清视频在线| 国产精品入口麻豆原神| 激情综合色综合久久| 激情91久久| 欧美一区二区三区日韩视频| 亚洲美女少妇撒尿| 国产a级毛片一区| 国产精品主播| 国产精品网站在线观看| 国产精品一区二区x88av| 国产亚洲精品久久飘花| 26uuu亚洲| 精品一区精品二区高清| 亚洲精品偷拍| 久久久精品蜜桃| 国产又黄又大久久| 老牛影视一区二区三区| 中文字幕视频一区二区三区久| 国产成人午夜电影网| 久久精品电影| 亚洲精品美国一| 欧美视频成人| 久久久综合激的五月天| 国产一区二区女| 欧美性猛片xxxx免费看久爱| 亚洲影视在线观看| 亚洲调教视频在线观看| 久久久精品黄色| 成人免费观看男女羞羞视频| 欧美三级电影一区| 午夜a成v人精品| 国产精品一区二区在线观看| 国产精品电影一区二区| 91浏览器打开| 久久嫩草精品久久久精品| 国产成人亚洲综合a∨猫咪| 欧美网站一区二区| 麻豆精品一区二区av白丝在线| 国产色综合网| 怡红院av一区二区三区| 在线精品亚洲| 亚洲免费资源在线播放| 在线 亚洲欧美在线综合一区| 国产精品污www在线观看| 91啦中文在线观看| 久久久久国产免费免费| av不卡免费电影| 久久久久国产精品麻豆ai换脸| 99久久精品国产一区| 国产农村妇女精品| 欧美日韩综合精品| 最新中文字幕一区二区三区| 黄色国产精品一区二区三区| 亚洲桃色在线一区| 国产欧美日韩一区| 香蕉加勒比综合久久| 久久久亚洲人| 美女一区二区久久| 欧美日韩久久不卡| 福利一区二区在线| 国产三级一区二区三区| 亚洲婷婷在线| 一区二区三区四区乱视频| 香蕉久久国产| 久久国产精品第一页| 日韩欧美一二三| 欧美日韩综合精品| 亚洲与欧洲av电影| 欧美少妇xxx| 成人黄色av电影| 亚洲视频一二三| 在线日韩av片| 盗摄精品av一区二区三区| 久久久久久久久久电影| 一区二区动漫| 国产一区日韩二区欧美三区| 精品日韩成人av| 欧美jizzhd精品欧美巨大免费| 国产精品成人在线观看| 免费久久久一本精品久久区 | 国产精品久久久久久久久图文区| 亚洲激情另类| 美女一区二区在线观看| 欧美精品一区在线观看| 亚洲毛片播放| 国内精品国产三级国产a久久| 欧美成人video| 夜夜嗨一区二区三区| 国产精品自拍毛片| 国产精品国产自产拍高清av| 在线一区二区三区四区五区| 99久久久精品免费观看国产蜜| 综合久久综合久久| 欧美日韩成人高清| 亚洲午夜精品久久| 国产在线精品一区在线观看麻豆| 国产欧美日韩视频一区二区| 色呦呦网站一区| 欧美国产免费| 激情文学综合插| 亚洲九九爱视频| 日韩精品中文字幕在线不卡尤物 | 777午夜精品视频在线播放| 欧美午夜不卡| 久久99热99| 亚洲人123区| 日韩欧美国产系列| 色哟哟一区二区三区| 91麻豆精品在线观看| 激情综合网最新| 亚洲一二三四区不卡| 久久久久久久久久久久久夜| 欧美性猛交xxxx乱大交退制版| 国产一区自拍视频| 国产成人综合视频| 日本亚洲天堂网| 亚洲美女淫视频| 国产三级三级三级精品8ⅰ区| 欧美美女一区二区三区| 亚洲一区自拍| 亚洲精品1区| 91毛片在线观看| 成人黄色网址在线观看| 精品一区二区三区视频| 亚洲风情在线资源站| 成人免费在线视频| 精品入口麻豆88视频| 欧美高清激情brazzers| 久久久水蜜桃| 国产精品一区二区三区四区五区| 国产一区美女| 欧美性天天影院| 欧美激情第二页| 91看片淫黄大片一级在线观看| 国产在线麻豆精品观看| 美女一区二区久久| 奇米综合一区二区三区精品视频| 一区二区三区美女视频| 最新久久zyz资源站| 国产欧美日韩综合| 久久蜜桃一区二区| wwwwxxxxx欧美| 精品久久人人做人人爱| 日韩视频免费观看高清完整版| 欧美久久一区二区| 欧美精品久久一区二区三区| 欧美精品久久一区|