国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3 + TS4.8踩坑之配置husky問題env: sh\r: No such file or directory

這篇具有很好參考價值的文章主要介紹了Vue3 + TS4.8踩坑之配置husky問題env: sh\r: No such file or directory。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、基本情況:

硬件環(huán)境:MacOS 10.14.6

背景:

1,用vue3官方npm init vue@latest初始化創(chuàng)建的vue3 + ts4.8項目,IDE是?VS Cde 1.77.3版本

2,初始化項目之后給項目配置了.editorconfig,方便團隊統(tǒng)一格式。

3,配置了husky,在git commit的時候做兩個檢查:

? ? ? ? 1),檢查commit的消息是否符合規(guī)范

? ? ? ? 2),檢查項目內容是否滿足eslint要求

二、問題和解決方案:

問題1:git commit的時候提示:env: sh\r: No such file or directory

原因:

1,(修改)重新保存.husky/commit-msg之后,文件的編碼變?yōu)榱薲os的,因為我的電腦是mac需要修改為unix的。

2,為什么保存之后會變?yōu)閐os編碼格式?是因為我的工程配置了.editorconfig,其中的一個配置項end_of_line = crlf導致保存的時候自動存成了dos編碼格式的。

解決方案:

方案1,?修改文件編碼,將.husky/commit-msg文件編碼手工改為unix的,步驟參考:sh提示“no such file or directory”解決辦法-百度經驗

方案2,也可以用vs code 可視化的轉換,點擊IDE底部的CRLF或者LF彈出編碼選項框選擇

Vue3 + TS4.8踩坑之配置husky問題env: sh\r: No such file or directory

方案3,注釋掉.editorconfig配置中的end_of_line = crlf

出問題的時候我的.editorconfig配置內容為:

# 表明是最頂層的配置文件
root = true
# 正則*匹配所有文件
[*]
# 編碼格式
charset = utf-8
# 定義換行符,我查看了一下我們的代碼中換行基本都是\r\n,因此使用crlf ,而不使用lf
end_of_line = crlf
# 縮進空格數(shù)
indent_size = 2
# 縮進方式
indent_style = space
# 文件是否以空白行結尾
insert_final_newline = true
# 是否去處行首行尾的空白字符
trim_trailing_whitespace = true
 
# 正則匹配以.md結尾的文件
[*.md]
 
# 保存文件時是否在結尾添加一個新行
insert_final_newline = false
# 在新行之前是否移除所有的空格字符
trim_trailing_whitespace = false

再三折騰之后,明確了是配置中的換行符定義導致的,再三思考,將其去掉吧。

于是.editorconfig變?yōu)槿缦?,也就解決了問題:

# 表明是最頂層的配置文件
root = true
# 正則*匹配所有文件
[*]
# 編碼格式
charset = utf-8
# 定義換行符,我查看了一下我們的代碼中換行基本都是\r\n,因此使用crlf ,而不使用lf
# 可能會導致命令腳本在mac下保存后變?yōu)閐os編碼格式而無法執(zhí)行,因此這一條規(guī)則注釋掉
# end_of_line = crlf
# 縮進空格數(shù)
indent_size = 2
# 縮進方式
indent_style = space
# 文件是否以空白行結尾
insert_final_newline = true
# 是否去處行首行尾的空白字符
trim_trailing_whitespace = true
 
# 正則匹配以.md結尾的文件
[*.md]
 
# 保存文件時是否在結尾添加一個新行
insert_final_newline = false
# 在新行之前是否移除所有的空格字符
trim_trailing_whitespace = false

四、我的踩坑和排查經歷,可看可不看。

我的husky配置步驟:

1,安裝husky依賴

npm install husky --dev

2,在package.json中配置整個項目的初始化scripts(方便團隊伙伴 npm install的時候自動install husky):

"scripts": {
  "prepare": "npx husky install"
 }

3,手動執(zhí)行husky install,或者整體項目執(zhí)行npm install,因為我已經安裝過整體項目,就單獨install husky

npx husky install

4,添加 commit-msg hook

npx husky add .husky/commit-msg "npx eslint --fix src/**/**.{ts,vue}"

這一個步驟會在.husky文件夾下添加一個文件名為commit-msg的命令執(zhí)行文件。

里面的內容為:

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

npx eslint --fix src/**/**.{ts,vue}

至此測試,git commit,一切還正常。

幺蛾子即將出現(xiàn)

5,我計劃給commit-msg hook再配置一個消息的校驗

于是用vs code 打開.husky/commit-msg,在里面增加一行?node scripts/verifyCommit.js?保存,里面的內容變?yōu)椋?/p>

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

node scripts/verifyCommit.js
npx eslint --fix src/**/**.{ts,vue}

同時在scripts文件夾下,增加verifyCommit.js,內容是網上通用的:

const fs = require('fs')
const msg = fs.readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim()
const commitRe  = /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/
const mergeRe = /^(Merge pull request|Merge branch)/
console.log('開始檢測提交信息是否合規(guī), msg = ', msg)
if(!commitRe.test(msg)) {
    if(!mergeRe.test(msg)) {
        console.log('git commit 信息格式校驗【不】通過')
        console.error(`git commit 信息格式不對,需要使用 title(scope): desc的格式
        比如 fix: xxbug
        feat(test): add new
        具體校驗邏輯請看 script/verifyCommit.js
        `)
        process.exit(1)
    }
} else {
    console.log('git commit 信息格式校驗通過')
}

再次測試,到此問題出現(xiàn):

env: sh\r: No such file or directory

Vue3 + TS4.8踩坑之配置husky問題env: sh\r: No such file or directory

刪掉剛才添加的node scripts/verifyCommit.js行,保存,再測試,也不行。。。。

上百度,上google,我擦,跟我這現(xiàn)象的不太多啊,不是一個通用問題。就這么簡單的一個操作,咋會出問題。各種折騰開始。。。

刪掉整個.husky文件夾,重新install,

npx husky install

重新用命令添加hook:?

npx husky add .husky/commit-msg "npx eslint --fix src/**/**.{ts,vue}"

再測試,好了。

在網上看到過一篇文章說是鉤子文件的編碼格式問題,開始嘗試

再打開.husky/commit-msg,什么都不做,直接保存一下。再測試,掛了。。至此,那肯定是.husky/commit-msg文件的編碼格式問題了。

vim?.husky/commit-msg

然后輸入 :set ff 查看文件格式,果然,此時變成了fileformat=dos,郁悶。

再次輸入 :set fileformat=unix 然后輸入:wq保存退出,測試,好了。。

上面塊中的步驟,其實可以用vs code顯示的處理哈。

繼續(xù)排查為什么保存commit-msg命令文件之后,就會有問題,直接猜測是配置文件.editorconfig導致的,于是改個名字試試看,把.editorconfig改為.888editorconfig,再次保存commit-msg文件,沒問題了。

里面的哪個配置導致的呢,直接就懷疑是end_of_line = crlf,注釋掉試試看。

果然是,真沒想到這個配置會導致unix編碼的文件變?yōu)閐os格式。也沒其他的影響,那就過段去掉吧。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-421931.html

到了這里,關于Vue3 + TS4.8踩坑之配置husky問題env: sh\r: No such file or directory的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Vue3+Vite項目配置husky、stylelint、commitlint,實現(xiàn)git提交前代碼校驗

    Vue3+Vite項目配置husky、stylelint、commitlint,實現(xiàn)git提交前代碼校驗

    做什么:本文將從零開始帶你配置 husky 、 stylelint ,完成代碼提交git前的強制校驗,保證代碼風格和一致性 技術棧:Vue3 + TypeScript + Vite 1.1 node.js v16.0.0 及以上 (我 v16.14.1) 1.2 pnpm v8.0.0 及以上(我 v8.6.6) 2.1 安裝 pnpm 2.2 創(chuàng)建項目-不多贅述 3.1 安裝 eslint 3.2 生成eslint配置文件

    2024年02月13日
    瀏覽(22)
  • vue3+vite中使用環(huán)境變量 .env 的一些配置情況說明

    在項目文件中新建文件.env .env.pro 兩個文件其中.env 是默認設置 .env.pro 為正式環(huán)境設置 1、設置.env中的內容信息 注意vue3+vite 必須使用VITE開頭的配置信息 否則無法獲取 如果不想使用VITE開頭自己修改就在vite.config.ts文件中添加envPrefix:“APP_” 2、在 vite 中使用環(huán)境變量,可以用

    2024年02月04日
    瀏覽(100)
  • Vue3通透教程【十六】TS編譯配置

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應粉絲要求開始更新 Vue3 的相關技術文章,Vue 框架目前的地位大家應該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月16日
    瀏覽(22)
  • STM32/GD32學習指南-踩坑之(一)外部晶振配置,初始化失敗,不起振

    STM32/GD32學習指南-踩坑之(一)外部晶振配置,初始化失敗,不起振

    GD32使用外部有源晶振和無源晶振的問題,型號為GD32 F450 一、GD32配置使用外部晶振 1.使用外部無源晶振 找到startup_gd32f450_470.s匯編文件,找到SystemInit()函數(shù)跳轉進去 在底部找到system_clock_config()函數(shù),再次跳轉進去 選中宏定義:__SYSTEM_CLOCK_200M_PLL_IRC16M,跳轉,如圖 將內部時鐘

    2024年02月13日
    瀏覽(26)
  • vue3+ts項目中eslint校驗配置

    vue3+ts項目中eslint校驗配置

    eslint中文官網:ESLint - Pluggable JavaScript linter - ESLint中文 ESLint 是一個根據方案識別并報告 ECMAScript/JavaScript 代碼問題的工具,其目的是使代碼風格更加一致并避免錯誤,合理利用可以提高代碼質量。 1.安裝eslint pnpm i eslint -D 2.生成eslint配置文件 npx eslint --init 3.安裝vue3代碼環(huán)境校

    2024年02月04日
    瀏覽(47)
  • 【Vue3+Ts+Vite】配置滾動條樣式

    【Vue3+Ts+Vite】配置滾動條樣式

    2024年02月15日
    瀏覽(17)
  • Vue3通透教程【十五】補充TS開發(fā)環(huán)境搭建問題

    專欄介紹: 涼哥作為 Vue 的忠實 粉絲輸出過大量的 Vue 文章,應粉絲要求開始更新 Vue3 的相關技術文章,Vue 框架目前的地位大家應該都曉得,所謂三大框架使用人數(shù)最多,公司選型最多的框架,涼哥之前在文章中也提到過就是 Vue 框架之所以火起來的原因,和 Vue 框架相比其

    2024年02月15日
    瀏覽(33)
  • 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交規(guī)范

    本文介紹 vue3-element-admin 如何通過 Husky + Lint-staged + Commitlint + Commitizen + cz-git 來配置 Git 提交代碼規(guī)范。 核心內容是配置 Husky 的 pre-commit 和 commit-msg 兩個鉤子: pre-commit :Husky + Lint-staged 整合實現(xiàn) Git 提交前代碼規(guī)范檢測/格式化 (前提:ESlint + Prettier + Stylelint 代碼統(tǒng)一規(guī)范);

    2023年04月17日
    瀏覽(47)
  • vue3-ts-vite:vue 項目 配置 多頁面應用

    vue3-ts-vite:vue 項目 配置 多頁面應用

    一、Vue項目,什么是多頁面應用 Vue是一種單頁面應用程序(SPA)框架,這意味著Vue應用程序通常只有一個HTML頁面,而在該頁面上進行動態(tài)的內容更改,而不是每次都加載新的HTML頁面。? 但是,有時候我們需要在同一應用程序中擁有多個獨立的頁面,每個頁面都可以單獨處理

    2024年02月14日
    瀏覽(45)
  • vue3+Vite+TS項目,配置ESlint和Prettier

    vue3+Vite+TS項目,配置ESlint和Prettier

    實操過的有兩種方式 1.vue腳手架 2.vite(推薦,也是尤大大團隊研發(fā)) 具體怎么新建一個vue3項目就不多講了,可以按照官方文檔來 創(chuàng)建后的文件目錄長這樣 多提一句,vite也會隨著時間不斷迭代,后續(xù)項目結構可能還會發(fā)生變化,當前使用的vue版本 和vite版本也一并貼出來 下

    2024年04月15日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包