精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端工程化小記

開發 前端
關于代碼語法檢查、代碼格式化、commit注釋規范、代碼編譯等等這些工作量繁雜且巨大的苦力活,除非你不想把人當馬用,那還是交給機器去做,是嗎?

1.引言

工作中,我們是否經常遇到以下情況:

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

關于代碼語法檢查、代碼格式化、commit注釋規范、代碼編譯等等這些工作量繁雜且巨大的苦力活,除非你不想把人當馬用,那還是交給機器去做,是嗎?

前端領域早已不是以前的純js、jquery 時代,模塊化、工程化也成為了前端領域的追求,這樣才能保證前端程序的可讀性,可維護性,健壯性等等

2.背景

前端工程化已經發展了有些年月了,大量提高效率的包如雨后春筍般涌出。所以作為小前端的我也忍不住去探索一番,畢竟誰也不想瘋狂加班,被當作馬使,也想下早班開啟簡單開心的生活

本文旨在記錄探索前端基本工程化的實踐過程,方便自己以后翻閱,請輕噴(ps: 這篇文章聚焦代碼檢查,代碼美化,commit規范,其中有借助chatgpt)

項目基本技術選型為:react + ts,所以將以此為基礎展開前端工程化基本配置

3.Git鉤子:husky

husky 是一個用于在 Git 鉤子中運行命令的工具,它能夠在代碼提交或推送等特定事件中自動觸發指定的命令。通過 husky,你可以在代碼提交前、提交后、推送前等場景下運行腳本,以進行代碼風格檢查、單元測試、構建等操作

安裝如下:

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

用快捷命令完成上面的安裝步驟

# npm
npx husky-init && npm install

# yarn
yarn dlx husky-init --yarn2 && yarn

#pnpm
pnpm dlx husky-init && pnpm install

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

lint-staged是一個用于在 git 暫存文件上運行指定命令的工具。它可以幫助你在提交代碼前,只對即將提交的文件進行代碼風格檢查、格式化、靜態分析等操作,以便在代碼提交之前保持代碼的質量和一致性

基本使用如下:

  1. 安裝依賴
# npm
npm install lint-staged --save-dev

#yarn 
yarn add lint-staged --dev

#pnpm
pnpm add lint-staged --save-dev
  1. 修改package.json文件如下:
{
  "scripts": {
    "lint": "eslint src"
  },
  "lint-staged": {
    "src/**/*.{ts,tsx}": [
      "npm run lint", // 運行自定義的 lint 腳本
      "git add" // 添加修復后的文件到暫存區
    ]
  }
}

以上配置表示:對于 src 目錄下的所有后綴為 ts 和 tsx 的文件,在提交前會運行 npm run lint 命令來進行語法檢查,然后將修復后的文件添加到暫存區

實際開發時,lint-staged 一般會配合 pre-commit 鉤子進行 commit 之前的動作,所以我們替換 pre-commit 鉤子內容如下:

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

npx lint-staged

5.commit注釋規范:commitlint

commitlint 是一個用于規范化 Git 提交消息的工具。它幫助團隊確保每個提交消息都符合統一的規范,以提高代碼倉庫的可讀性和可維護性

這里直接展示commitlint搭配husky一起使用

  1. 安裝相關依賴
# 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信息,默認使用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注釋類型解釋如下:

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

6.代碼檢查

代碼檢查借助了eslint, typescript-eslint

eslint是一個用于檢查和修復 JavaScript 代碼錯誤、風格和質量問題的工具。它可以幫助開發人員和團隊在編碼過程中遵循一致的編碼規范,提高代碼可讀性、可維護性和質量

typescript-eslint是一個用于對 TypeScript 代碼進行檢查和修復的工具。它基于eslint,提供了一套規則和插件,可以檢查和修復 TypeScript 代碼中的錯誤、風格和質量問題

綜上所訴,需要開發環境下安裝如下包:

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

# yarn
yarn add eslint eslint-plugin-react-hooks eslint-plugin-react-refresh @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev

# pnpm
pnpm add eslint eslint-plugin-react-hooks eslint-plugin-react-refresh @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev

eslint基本使用步驟如下:

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

typescript-eslint基本使用步驟如下:

  1. 安裝typescript-esLint:在項目根目錄下運行以下命令
#npm 
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev

# yarn
yarn add @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev

#pnpm
pnpm add @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
  1. 配置eslint和@typescript-eslint插件:在生成的eslint配置文件中,需要指定解析器為@typescript-eslint/parser,并使用@typescript-eslint/eslint-plugin提供的規則和插件

eslint配置文件如下(以.eslintrc為例):

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'
  }
}

以下為結合 lint-staged 配置的代碼檢查命令:

{
  "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是一個代碼格式化工具,它可以自動調整代碼的格式,使其符合統一的風格規范

基本使用如下:

  1. 安裝依賴
# npm 
npm install prettier --save-dev

# yarn
yarn add prettier --dev

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

實際應用時會在 commit 之前進行美化代碼,以下為結合 lint-staged 配置的代碼檢查+代碼美化命令:

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


責任編輯:武曉燕 來源: 佳華云原生實踐
相關推薦

2022-12-01 07:46:01

工程化工具

2021-05-18 19:18:50

前端工程化工程

2015-10-26 10:32:01

前端優化工程化

2022-07-26 17:19:11

前端前端工程化

2022-10-09 14:50:24

前端pnpm工具

2022-08-17 11:33:35

前端配置

2021-06-05 18:01:05

工具Rollup前端

2018-06-15 10:12:04

滴滴前端分支管理

2023-02-15 18:12:43

開發企業級CLI

2022-07-06 11:20:16

前端開發

2022-07-14 11:43:47

Node.jswebpack

2021-11-22 06:17:26

npm工程化工具

2023-07-12 11:54:45

大前端WOT全球技術創新大

2022-08-20 18:28:49

汽車軟件

2021-03-19 07:23:23

Go架構Go工程化

2024-07-02 10:48:04

語言項目配置

2021-07-06 10:03:05

軟件開發 技術

2018-05-18 10:08:15

人工智能移動平臺大數據

2025-10-30 03:00:00

AgentLangChain工程化

2024-06-28 11:22:09

點贊
收藏

51CTO技術棧公眾號

欧美熟妇精品一区二区| 国产色综合一区二区三区| 黑人と日本人の交わりビデオ| 九七影院97影院理论片久久| 亚洲免费观看在线观看| 免费国产在线精品一区二区三区| 中文字幕精品在线观看| 欧美国产三区| 亚洲日韩第一页| 久久黄色一级视频| 亚洲第一二三四区| 亚洲一区二区视频在线| 色999日韩自偷自拍美女| 国产黄色高清视频| 日韩成人精品在线| 久久久久女教师免费一区| 亚洲精品乱码久久久久久久久久久久| 一区二区三区日本视频| 欧美性极品xxxx娇小| 日本女人高潮视频| av中文字幕在线| av福利精品导航| 亚洲自拍小视频免费观看| 中文字幕在线天堂| 亚洲美女少妇无套啪啪呻吟| 久久久97精品| 国产免费嫩草影院| 欧美热在线视频精品999| 亚洲成人精品在线| 亚洲欧美激情一区二区三区| 国产极品久久久久久久久波多结野| 亚洲国产综合人成综合网站| 天堂av在线中文| yourporn在线观看视频| 26uuu欧美| 国产一区免费在线观看| 亚洲av综合色区无码一区爱av| 蜜臀av一区二区在线免费观看 | 精品国内二区三区| 超碰91在线播放| 免费视频成人| 欧美视频一二三区| 激情婷婷综合网| 国产99在线观看| 亚洲国产综合91精品麻豆| 水蜜桃在线免费观看| 欧美13一16娇小xxxx| 国产精品视频一二三区| 亚洲mv在线看| www.亚洲.com| 国产精品久久久久久久久快鸭| 日本成人黄色| av色图一区| 国产精品无遮挡| 亚洲一二三区精品| 免费黄色在线看| 亚洲品质自拍视频网站| 老汉色影院首页| 先锋成人av| 亚洲国产日韩精品| 日韩国产欧美亚洲| 欧美美女日韩| 欧洲一区在线电影| the porn av| 高清一区二区三区av| 欧美一区二区三区精品| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 99精品免费观看| 成人视屏免费看| 国产一区二区在线网站| 九九九伊在人线综合| 国产日韩精品视频一区| 资源网第一页久久久| 影音先锋在线视频| 天天亚洲美女在线视频| www黄色av| 色成人综合网| 日韩一区二区麻豆国产| 北京富婆泄欲对白| 激情婷婷综合| 久久99热这里只有精品国产| 99热只有这里有精品| 青青草国产成人99久久| 91色视频在线观看| 香蕉久久一区二区三区| 国产欧美精品一区二区三区四区 | 一级日本在线| 亚洲综合精品自拍| 成人久久久久久久久| 国产成人午夜性a一级毛片| 91精品国产欧美一区二区18| 男男一级淫片免费播放| 欧美日韩国产高清电影| 欧美另类高清videos| 99热只有这里有精品| 久久99日本精品| 精品免费国产| 黄av在线免费观看| 欧美日韩国产页| 午夜剧场在线免费观看| 好吊妞国产欧美日韩免费观看网站| 亚洲一区二区久久| 麻豆一区产品精品蜜桃的特点| 久久福利毛片| 91视频网页| 你懂的免费在线观看| 亚洲激情av在线| 日本成人中文字幕在线| jizz国产精品| 久久精品99无色码中文字幕 | www.涩涩爱| 伊人久久亚洲美女图片| 国产欧美 在线欧美| 无码精品视频一区二区三区| 中文字幕一区在线观看| 国产91在线免费| 色妞ww精品视频7777| 一本久久综合亚洲鲁鲁| www欧美在线| 成人手机电影网| 97在线免费视频观看| 欧美成人家庭影院| 伊人久久免费视频| 国产无套丰满白嫩对白| 成人激情校园春色| 亚洲av综合色区| 91成人福利社区| 日韩一区av在线| 亚洲精品91天天久久人人| 91蜜桃在线免费视频| 国产九色porny| 视频一区日韩精品| 欧美夫妻性生活视频| 97人妻精品一区二区三区软件| 国产日韩三级在线| 欧洲av无码放荡人妇网站| 国产精品对白久久久久粗| 美女视频久久黄| 在线观看国产精品视频| 国产精品麻豆久久久| 男女无套免费视频网站动漫| 台湾亚洲精品一区二区tv| 午夜精品久久久久久久久久久久| 精品国产九九九| 樱花影视一区二区| 亚洲成人av免费观看| 中文字幕日韩一区二区不卡| 成人精品久久一区二区三区| 尤物网在线观看| 欧美精品自拍偷拍| 2025国产精品自拍| 国产毛片精品一区| 亚洲色婷婷久久精品av蜜桃| 精品国产三级| 欧美激情久久久久久| 精品人妻一区二区三区四区不卡 | 9i精品福利一区二区三区| 久久精品视频一区二区| 午夜dv内射一区二区| 欧美日韩高清| 91沈先生在线观看| 黄色污污视频在线观看| 亚洲国产精品女人久久久| 天堂网视频在线| 国产精品久久久久久久久免费相片 | 精品一区二区三区视频在线观看 | 欧美aa一级| 亚洲香蕉成视频在线观看| 这里只有精品9| 成人欧美一区二区三区白人| www.精品在线| 欧美 日韩 国产精品免费观看| 高清一区二区三区视频| 忘忧草在线日韩www影院| 在线日韩精品视频| 99riav国产| 色综合色狠狠综合色| 小嫩苞一区二区三区| 成人免费视频播放| 日日摸天天爽天天爽视频| 我不卡神马影院| 黑人另类av| 8av国产精品爽爽ⅴa在线观看| 久久久国产91| 日本天堂在线| 欧美一区二区三区四区五区 | 中文字幕在线播放网址| 亚洲精品97久久| 亚洲中文字幕在线观看| 图片区小说区国产精品视频| 国产又黄又粗视频| 成人小视频在线| 欧美精品久久久久久久久25p| 欧美黄色一级视频| 色综合视频二区偷拍在线| 视频一区中文字幕精品| 国产精品草莓在线免费观看| 三级资源在线| 在线日韩第一页| 五月婷婷久久久| 91精品国产入口| 国产精品午夜一区二区| 亚洲成av人片一区二区三区| 天天干天天舔天天操| www.66久久| 国产一级免费大片| 三级影片在线观看欧美日韩一区二区| av中文字幕av| 999视频精品| 欧美婷婷久久| 猫咪成人在线观看| 999国内精品视频在线| 91国拍精品国产粉嫩亚洲一区| 久久久伊人欧美| av在线free| 日韩在线欧美在线| 国产在线视频福利| 亚洲电影免费观看高清| 精品二区在线观看| 欧美日韩电影在线| 国产在线观看第一页| 欧美色视频日本版| 日本少妇毛茸茸高潮| 亚洲激情综合网| 一区二区视频免费看| 国产精品日韩精品欧美在线| 色综合99久久久无码国产精品| 91偷拍与自偷拍精品| 中文字幕人妻一区二区三区| 国产成人午夜精品影院观看视频| 亚洲久久中文字幕| 欧美aaa在线| 色悠悠久久综合网| 日产国产欧美视频一区精品| 一本大道熟女人妻中文字幕在线 | 一区二区视频免费在线观看| 亚洲一二三四五六区| 中文子幕无线码一区tr| 调教驯服丰满美艳麻麻在线视频 | 久久精品一区二区三| 亚洲视频一二区| 美国一级片在线观看| 国产精品久久久久久久久动漫 | 免费网站成人| 久久韩国免费视频| 精精国产xxxx视频在线| 成人444kkkk在线观看| 国产高清一区二区三区视频| 久久亚洲春色中文字幕| 99在线视频观看| 欧美激情第三页| 91超碰在线免费| 欧美亚洲激情在线| 三上悠亚激情av一区二区三区 | 亚洲欧美怡红院| 极品色av影院| 一区二区三区四区高清精品免费观看| 少妇久久久久久被弄高潮| 亚洲福中文字幕伊人影院| www.av视频在线观看| 精品av在线播放| 无码人妻精品一区二| 欧美日韩成人高清| www.蜜桃av.com| 亚洲精品乱码久久久久久金桔影视 | 欧美亚洲国产成人| 石原莉奈在线亚洲三区| 天天干天天玩天天操| 国产高清成人在线| 野外性满足hd| 亚洲国产精品二十页| 久草综合在线视频| 天天影视涩香欲综合网| 自拍偷拍福利视频| 日韩一级片网站| 秋霞av在线| 久久精品夜夜夜夜夜久久| 男人天堂亚洲| 国产成人精品视频| 欧美久久亚洲| 久久亚洲免费| 久久精品免费一区二区三区| 成人性免费视频| 麻豆视频一区二区| 精品人妻伦一二三区久| 欧美高清在线精品一区| 久久免费视频精品| 欧洲国内综合视频| 亚洲春色一区二区三区| 亚洲图片欧洲图片av| 18+激情视频在线| 国产成+人+综合+亚洲欧美丁香花| 亚洲黑人在线| 免费久久久一本精品久久区| 亚洲国产精品久久久天堂| 国产成人无码精品久久久性色| 麻豆一区二区在线| 黄色国产在线观看| 亚洲精品菠萝久久久久久久| 欧美超碰在线观看| 精品国产在天天线2019| 91看片在线观看| 2019中文字幕在线| 视频亚洲一区二区| 午夜啪啪免费视频| 首页综合国产亚洲丝袜| 色哟哟网站在线观看| 国产精品无圣光一区二区| 黄网在线观看视频| 日韩欧美不卡在线观看视频| av电影在线观看| 日本亚洲精品在线观看| 国产精品久久久久av蜜臀| 一区二区三区不卡在线| 日韩精品一二区| 欧美 日本 国产| 亚洲成av人片在www色猫咪| 国产精品嫩草影院精东| 社区色欧美激情 | 黄瓜视频成人app免费| 国产日韩精品推荐| 欧美三级不卡| 色男人天堂av| 亚洲欧洲另类国产综合| 日本三级一区二区三区| 亚洲色图第一页| 欧美日韩免费看片| 久久天堂国产精品| 国产亚洲毛片在线| 国产黄色三级网站| 精品久久久久久国产91| 天堂中文网在线| 午夜精品一区二区三区在线播放| 日韩高清在线观看一区二区| 热这里只有精品| 九一久久久久久| 成年人网站在线观看视频| 精品视频一区三区九区| 国产剧情在线观看| 国产成人一区二区三区小说| 久久91精品| 9久久婷婷国产综合精品性色| 国产视频视频一区| 国产一区免费看| 亚洲深夜福利视频| 日韩不卡视频在线观看| 色狠狠久久av五月综合| 蜜臀a∨国产成人精品| 成人信息集中地| 欧美一区二区视频网站| 精灵使的剑舞无删减版在线观看| 成人av免费在线看| 亚洲精品综合| 久久精品无码一区| 欧美日韩亚洲不卡| 黄色网在线免费观看| 9a蜜桃久久久久久免费| 日韩视频在线一区二区三区| 麻豆国产精品一区| 精品视频在线免费看| 成人片在线看| 九色91国产| 日日骚欧美日韩| 我要看黄色一级片| 亚洲第一福利网| 88xx成人免费观看视频库 | 国产亚洲欧美一区二区| 国产模特精品视频久久久久| 成人黄色免费网址| 91麻豆精品久久久久蜜臀| 国产丝袜在线观看视频| 久久婷婷开心| 韩国毛片一区二区三区| 国产 日韩 欧美 成人| 亚洲欧洲在线看| 麻豆精品久久| 丰满少妇被猛烈进入高清播放| 中文成人综合网| 欧美亚洲精品在线观看| 国产91色在线|免| 欧美久久久久| 精品成人av一区二区三区| 欧美日韩国产色站一区二区三区| 影音先锋男人资源在线| 免费国产一区| 国产盗摄视频一区二区三区| 在线观看日本视频| 欧美日韩成人在线观看| 亚洲+变态+欧美+另类+精品| 中文字幕av专区| 狠狠色狠色综合曰曰| 国产区在线看| 欧美精品久久| 国产精品亚洲人在线观看| 无码人妻丰满熟妇奶水区码| 欧美大片在线免费观看| re久久精品视频| 亚洲图片综合网| 91精品欧美一区二区三区综合在 | 欧美一级视频精品观看|