日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

前端工程化小記

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

1.引言

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

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

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

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

2.背景

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

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

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

3.Git鉤子:husky

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

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

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

用快捷命令完成上面的安裝步驟5J528資訊網(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是一個用于在 git 暫存文件上運行指定命令的工具。它可以幫助你在提交代碼前,只對即將提交的文件進行代碼風(fēng)格檢查、格式化、靜態(tài)分析等操作,以便在代碼提交之前保持代碼的質(zhì)量和一致性5J528資訊網(wǎng)——每日最新資訊28at.com

基本使用如下:5J528資訊網(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", // 運行自定義的 lint 腳本      "git add" // 添加修復(fù)后的文件到暫存區(qū)    ]  }}

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

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

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

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

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

這里直接展示commitlint搭配husky一起使用5J528資訊網(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信息,默認使用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注釋類型解釋如下:5J528資訊網(wǎng)——每日最新資訊28at.com

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

6.代碼檢查

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

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

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

綜上所訴,需要開發(fā)環(huán)境下安裝如下包:5J528資訊網(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基本使用步驟如下:5J528資訊網(wǎng)——每日最新資訊28at.com

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

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

  1. 安裝typescript-esLint:在項目根目錄下運行以下命令
#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為例):5J528資訊網(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 配置的代碼檢查命令:5J528資訊網(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是一個代碼格式化工具,它可以自動調(diào)整代碼的格式,使其符合統(tǒng)一的風(fēng)格規(guī)范5J528資訊網(wǎng)——每日最新資訊28at.com

基本使用如下:5J528資訊網(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  }}

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

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


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

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

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

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

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

標(biāo)簽:
  • 熱門焦點
  • 石頭智能洗地機A10 Plus體驗:雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機A10 Plus。從這個產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機器
  • 天貓精靈Sound Pro體驗:智能音箱沒有音質(zhì)?來聽聽我的

    這幾年除了手機作為智能生活終端最主要的核心之外,第二個可以成為中心點的產(chǎn)品是什么?——是智能音箱。 手機在執(zhí)行命令的時候有兩種操作方式,手和智能語音助手,而智能音箱只
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 之家push系統(tǒng)迭代之路

    前言在這個信息爆炸的互聯(lián)網(wǎng)時代,能夠及時準(zhǔn)確獲取信息是當(dāng)今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • 一個注解實現(xiàn)接口冪等,這樣才優(yōu)雅!

    場景碼猿慢病云管理系統(tǒng)中其實高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:圖片上述代碼有
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • Counterpoint :OPPO雙旗艦戰(zhàn)略全面落地 高端產(chǎn)品銷量增長22%

    2023年6月30日,全球行業(yè)分析機構(gòu)Counterpoint Research發(fā)布的《中國智能手機高端市場白皮書》顯示,中國智能手機品牌正在尋求高質(zhì)量發(fā)展,中國高端智能
  • 上海舉辦人工智能大會活動,建設(shè)人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術(shù)、新產(chǎn)品、新應(yīng)用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發(fā)展盛典人工
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗基
Top 主站蜘蛛池模板: 黄山市| 榆树市| 武清区| 西盟| 探索| 甘洛县| 新平| 枣阳市| 太和县| 阿图什市| 雷山县| 日照市| 怀宁县| 平武县| 麟游县| 长兴县| 社旗县| 砚山县| 台北市| 明光市| 余姚市| 鄂托克旗| 镇安县| 武川县| 饶阳县| 朔州市| 苍南县| 潞城市| 临夏县| 扎囊县| 庆阳市| 江津市| 辰溪县| 铜梁县| 汾西县| 铜鼓县| 东辽县| 凤庆县| 满洲里市| 玉山县| 赫章县|