命令行CLI一鍵生成各種煩人的lint配置實(shí)例
前言
寫(xiě)一個(gè)前端工程,要配置特別多的配置文件,大量的配置文件讓我們很煩心,占用了大量寫(xiě)代碼的時(shí)間。

就像上圖,看著就頭大。
每次要啟動(dòng)一個(gè)新的項(xiàng)目,都要從頭配一遍。有人可能把這些文件當(dāng)做模板保存下來(lái),有需要的時(shí)候再?gòu)?fù)制粘貼。可是各個(gè)項(xiàng)目還是不盡相同,還是需要手動(dòng)改動(dòng)。
于是我決定寫(xiě)一個(gè)命令行工具來(lái)解決這件事。
create-lint-config
這個(gè)工具叫做 create-lint-config,一個(gè)一鍵創(chuàng)建所有的 lint 配置的 CLI 命令行工具。前端工程中特別多的配置文件例如 Eslint、Prettier 等讓我們心煩意亂。我們的目標(biāo)是快速而輕松地生成這些配置!
使用
在你的項(xiàng)目根目錄執(zhí)行以下命令:
# npm npm create lint-config@latest # yarn yarn create lint-config # pnpm pnpm create lint-config@latest
執(zhí)行結(jié)果如下:

這個(gè)命令,一次執(zhí)行,創(chuàng)建了 Eslint、StyleLint、prettier、commitlint、husy、lint-staged 等所有配置文件。
現(xiàn)有功能
- 生成 Eslint 配置。
- 生成 prettier 配置。
- 生成 stylelint 配置。
- 生成 husky 配置。
- 生成 commitlint 配置。
- 自動(dòng)安裝依賴。
- 期待更多。
源碼解讀
#!/usr/bin/env node
async function install({ pkgManager, cwd, _arguments }: { pkgManager: string; cwd: string; arguments: array }) {}
async function init() {
// 拷貝配置文件基礎(chǔ)模板,包括 Eslint、StyleLint、prettier、commitlint、husy、lint-staged
await spinner({
start: `Base template copying...`,
end: 'Template copied',
while: () => {
try {
copy('base')
} catch (e) {
error('error', e)
process.exit(1)
}
},
})
// 安裝 husky
await spinner({
start: `Husky installing...`,
end: 'Husky installed',
while: () =>
install({
cwd: process.cwd(),
pkgManager: 'npx',
_arguments: ['husky', 'install'],
}).catch((e) => {
error('error', e)
process.exit(1)
}),
})
// husky 寫(xiě)入 commit-msg 校驗(yàn)指令,使用 commitlint
await spinner({
start: `Adding commit-msg lint...`,
end: 'Commit-msg lint added',
while: () =>
install({
cwd: process.cwd(),
pkgManager: 'npx',
_arguments: ['husky', 'add', '.husky/commit-msg', 'npx --no-install commitlint --edit ""'],
}).catch((e) => {
error('error', e)
process.exit(1)
}),
})
// husky 寫(xiě)入 pre-commit校驗(yàn)指令,使用 lint-staged 執(zhí)行 elint 等
await spinner({
start: `Adding lint-staged...`,
end: 'Lint-staged added',
while: () =>
install({
cwd: process.cwd(),
pkgManager: 'npx',
_arguments: ['husky', 'add', '.husky/pre-commit', 'npx lint-staged'],
}).catch((e) => {
error('error', e)
process.exit(1)
}),
})
// 安裝依賴
await spinner({
start: `Dependencies installing with npm...`,
end: 'Dependencies installed',
while: () =>
install({
cwd: process.cwd(),
pkgManager: 'npm',
_arguments: ['install'],
}).catch((e) => {
error('error', e)
process.exit(1)
}),
})
}
init().catch((e) => {
console.error(e)
})
更多源碼請(qǐng)移步 GitHub 查看
TODO
- 支持通過(guò)
--template標(biāo)志來(lái)選擇模板,創(chuàng)建更多的配置文件模板,包括 ts、vue、react、node 等等 - 支持更靈活的交互式選項(xiàng)?,F(xiàn)在只能一鍵生成默認(rèn)的模板,有些配置可能是一些人不需要的,后續(xù)計(jì)劃可以更靈活。
總結(jié)
這個(gè)包還在起步階段,我希望有需求的同學(xué)可以來(lái)參與貢獻(xiàn)。
- 你可以貢獻(xiàn) feature
- 提交你自己正在使用的模板,以后用這個(gè)工具一鍵生成
- 你也可以 fork 或 clone 此項(xiàng)目,變成你自己的命令行工具
- 你也可以發(fā)布到你們公司的私有 npm,今年的 KPI 不就有了么
以上就是命令行CLI一鍵生成各種煩人的lint配置實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于命令行CLI一鍵生成lint配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決VantUI popup 彈窗不彈出或無(wú)蒙層的問(wèn)題
這篇文章主要介紹了解決VantUI popup 彈窗不彈出或無(wú)蒙層的問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Vue3?vite配置css?的sourceMap及文件引用配置別名的過(guò)程
這篇文章主要介紹了Vue3 vite配置css的sourceMap,及文件引用配置別名的過(guò)程,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Vue?Echarts實(shí)現(xiàn)帶滾動(dòng)效果的柱形圖
這篇文章主要為大家詳細(xì)介紹了Vue?Echarts實(shí)現(xiàn)帶滾動(dòng)效果的柱形圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Vue?計(jì)算屬性之姓名案例的三種實(shí)現(xiàn)方法
這篇文章主要介紹了Vue?計(jì)算屬性之姓名案例的三種實(shí)現(xiàn)方法,計(jì)算屬性實(shí)現(xiàn)、methods實(shí)現(xiàn)和插值語(yǔ)法實(shí)現(xiàn),下面文章具體介紹,需要的小伙伴可以參考一下2022-05-05
Vue3進(jìn)階主題Composition API使用詳解
這篇文章主要為大家介紹了Vue3進(jìn)階主題Composition API使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
vue2 如何實(shí)現(xiàn)div contenteditable=“true”(類(lèi)似于v-model)的效果
這篇文章主要給大家介紹了利用vue2如何實(shí)現(xiàn)div contenteditable="true",就是類(lèi)似于v-model的效果,文中給出了兩種解決的思路,對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-02-02
Vue-router優(yōu)化import引入過(guò)多導(dǎo)致index文件臃腫問(wèn)題
這篇文章主要為大家介紹了Vue-router優(yōu)化import引入過(guò)多導(dǎo)致index文件臃腫問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Vue.js集成Word實(shí)現(xiàn)在線編輯功能
在現(xiàn)代Web應(yīng)用中,集成文檔編輯功能變得越來(lái)越常見(jiàn),特別是在協(xié)作環(huán)境中,能夠直接在Web應(yīng)用內(nèi)編輯Word文檔可以極大地提高工作效率,本文將詳細(xì)介紹如何在Vue.js項(xiàng)目中集成Word在線編輯功能,需要的朋友可以參考下2024-08-08
vue路由 遍歷生成復(fù)數(shù)router-link的例子
今天小編就為大家分享一篇vue路由 遍歷生成復(fù)數(shù)router-link的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10
Vue.js Ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法
Vue.js是一個(gè)輕巧、高性能、可組件化的MVVM庫(kù),同時(shí)擁有非常容易上手的API。下面通過(guò)本文給大家介紹vue.js ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法,感興趣的朋友一起看看吧2016-10-10

