摘要:其實(shí)有點(diǎn)耗時間,所以我們做了一下自動化初步自動化修改中的初始化將部分腳本寫入到中詢問是否全部使用是否默認(rèn)使用開始安裝依賴正在安裝正在安裝清除掉以前配置的只要兩部安裝即可提交代碼的時候直接執(zhí)行即可更智能摸索中
先丟出最終版的index.js文件內(nèi)容
#!/usr/bin/env node "use strict"; const path = require("path"); const editJsonFile = require("edit-json-file"); const arg = process.argv // 初始化my-commit ,將部分腳本寫入到package.json中 if (arg[2] && arg[2] === "init") { // If the file doesn"t exist, the content will be an empty object by default. let file = editJsonFile(`${process.cwd()}/package.json`); // Set a couple of fields file.set("husky", {"hooks": { "pre-commit": "lint-staged" }}); file.set("lint-staged", { "src/*.js": "["eslint --fix"]" }); // 詢問是否全部使用git add . var List = require("prompt-list"); var list = new List({ name: "order", message: "是否默認(rèn)使用git add .", // choices may be defined as an array or a function that returns an array choices: [ "yes", "no" ] }) // async list.ask(function(answer) { file.set("scripts", { "my-ci": answer === "yes" ? "git add . && cross-env ./node_modules/.bin/my-commit" : "cross-env ./node_modules/.bin/my-commit" }); // Output the content file.save(); var shell = require("shelljs"); console.log("開始安裝依賴"); shell.exec("npm i husky --save-dev", {async: true}) console.log("正在安裝 husky---- "); shell.exec("npm i cross-env --save-dev", {async: true}) console.log("正在安裝cross-env ---- "); shell.exec("npm i lint-staged --save-dev", {async: true}) }) } else { const bootstrap = require("commitizen/dist/cli/git-cz").bootstrap; bootstrap({ cliPath: path.join(__dirname, "../../node_modules/commitizen"), // this is new config: { "path": "cz-conventional-changelog", "path": "cz-emoji" } }); }步驟 一、創(chuàng)建工具項目
1.使用git/gitlab創(chuàng)建一個空的倉庫
2.在空倉庫中添加index.js 內(nèi)容如下
// index.js #!/usr/bin/env node "use strict"; const bootstrap = require("commitizen/dist/cli/git-cz").bootstrap; bootstrap({ cliPath: path.join(__dirname, "../../node_modules/commitizen"), // this is new config: { "path": "cz-conventional-changelog" } });使用工具到相應(yīng)的項目(假設(shè)插件名稱my-commit)
1.先發(fā)布你的工具項目到npm,相當(dāng)于創(chuàng)建一個npm包、具體怎么發(fā)布 這里不做贅述,網(wǎng)上很多教程
2.安裝工具(假設(shè)插件名稱my-commit)
npm install my-commit --save-dev
3.配置
需要在package.json的script中添加如下
// my-ci 是自己定義的寫成什么都可以 "my-ci": "./node_modules/.bin/my-commit"
4.配置之后 執(zhí)行了git add .之后 執(zhí)行npm run my-ci 將會出現(xiàn)選填補(bǔ)充信息的選項
如果覺得git add.之后再執(zhí)行 npm run my-ci 有點(diǎn)麻煩,可以直接改成
// my-ci 是自己定義的寫成什么都可以 "my-ci": "git add. && ./node_modules/.bin/my-commit"
5 因?yàn)橐陨厦畲嬖诓煌到y(tǒng)路徑不兼容問題 需要加入 cross-env
npm install cross-env --save-dev
6 再次修改package.json
// my-ci 是自己定義的寫成什么都可以 "my-ci": "git add. && cross-env ./node_modules/.bin/my-commit"
當(dāng)需要提交代碼的時候,不用執(zhí)行git add . 直接執(zhí)行npm run my-ci即可
7 提示信息加上可愛的表情
需要在index.js文件中添加 cz-emoji 如下
// index.js #!/usr/bin/env node "use strict"; const bootstrap = require("commitizen/dist/cli/git-cz").bootstrap; bootstrap({ cliPath: path.join(__dirname, "../../node_modules/commitizen"), // this is new config: { "path": "cz-conventional-changelog", "path": "cz-emoji" } });
這個時候 重新發(fā)npm包之后再安裝到自己的項目下,執(zhí)行提交的時候
8 為了增強(qiáng)校驗(yàn)功能,加入eslint對文件進(jìn)行
這個有點(diǎn)復(fù)雜,需要通過lint-staged來判斷
所以先安裝以下依賴
npm i husky --save-dev npm i lint-stage --save-dev
配置package.json
// 增加屬性 "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "src/*.js": [ "eslint --fix" ] }, // 其中src的具體路徑是可以自己配置 // 校驗(yàn)規(guī)則是基于當(dāng)前目錄的.eslintrc.js 文件,如果有些規(guī)則不想要,就配置這個文件
這個時候我們提交代碼的時候再輸入基本的信息之后會執(zhí)行一個eslint的代碼規(guī)則
總結(jié)以上配置文件 我們需要
安裝的庫有
npm i my-commit --save-dev npm i cross --save-dev npm i husky --save-dev npm i lint-stage --save-dev
需要配置package.json屬性有
"script": { ... "my-ci": "git add. && cross-env ./node_modules/.bin/my-commit" }, "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "src/*.js": [ "eslint --fix" ] },
如果每個項目都這么玩。其實(shí)有點(diǎn)耗時間,所以我們做了一下自動化
10 初步自動化
修改my-commit中的 index.js
#!/usr/bin/env node "use strict"; const path = require("path"); const editJsonFile = require("edit-json-file"); const arg = process.argv // 初始化my-commit ,將部分腳本寫入到package.json中 if (arg[2] && arg[2] === "init") { // If the file doesn"t exist, the content will be an empty object by default. let file = editJsonFile(`${process.cwd()}/package.json`); // Set a couple of fields file.set("husky", {"hooks": { "pre-commit": "lint-staged" }}); file.set("lint-staged", { "src/*.js": "["eslint --fix"]" }); // 詢問是否全部使用git add . var List = require("prompt-list"); var list = new List({ name: "order", message: "是否默認(rèn)使用git add .", // choices may be defined as an array or a function that returns an array choices: [ "yes", "no" ] }) // async list.ask(function(answer) { file.set("scripts", { "my-ci": answer === "yes" ? "git add . && cross-env ./node_modules/.bin/my-commit" : "cross-env ./node_modules/.bin/my-commit" }); // Output the content file.save(); var shell = require("shelljs"); console.log("開始安裝依賴"); shell.exec("npm i husky --save-dev", {async: true}) console.log("正在安裝 husky---- "); shell.exec("npm i cross-env --save-dev", {async: true}) console.log("正在安裝cross-env ---- "); shell.exec("npm i lint-staged --save-dev", {async: true}) }) } else { const bootstrap = require("commitizen/dist/cli/git-cz").bootstrap; bootstrap({ cliPath: path.join(__dirname, "../../node_modules/commitizen"), // this is new config: { "path": "cz-conventional-changelog", "path": "cz-emoji" } }); }
清除掉以前配置的package.json
只要兩部安裝即可
npm i my-commit npx my-commit init
提交代碼的時候直接執(zhí)行 npm run my-ci 即可
11 更智能(摸索中)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98628.html
摘要:但是,畢竟是人,哪天忙了就會忘記提交,所以想著能不能實(shí)現(xiàn)在自己阿里云服務(wù)器系統(tǒng)上,設(shè)置,定制下命令,實(shí)現(xiàn)每天定點(diǎn)自動提交。 前言 進(jìn)入自己github主頁會看到自己的提交記錄,如果某天沒有提交記錄,那天的小方框就顯示灰色。強(qiáng)迫癥的我,每次進(jìn)來看著就感覺不爽,想著自己每天記得提交點(diǎn)東西,爭取像阮一峰大神一樣,每天都有提交記錄。 showImg(https://www.wty90.co...
摘要:設(shè)置什么是本用于介紹托管在的項目,不過,由于他的空間免費(fèi)穩(wěn)定,用來做搭建一個博客再好不過了。你可以通過來訪問你的個人主頁。執(zhí)行過程中可能需要讓你輸入賬戶的用戶名及密碼,按照提示操作即可。推薦使用騰訊公益。 系統(tǒng)環(huán)境配置 要使用Hexo,需要在你的系統(tǒng)中支持Nodejs以及Git,如果還沒有,那就開始安裝吧! 安裝Node.js 下載Node.js參考地址:安裝Node.js 安裝Git...
摘要:打造個人團(tuán)隊適用的開源項目規(guī)范是一個用來優(yōu)化托管在上的多代碼庫的工作流的一個管理工具可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發(fā)布時需要手動維護(hù)多個包的問題。 打造個人or團(tuán)隊適用的開源項目規(guī)范 lerna Lerna 是一個用來優(yōu)化托管在gitnpm上的多package代碼庫的工作流的一個管理工具,可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發(fā)布...
摘要:為此我們需要安裝這個是用于提交代碼的鉤子函數(shù)安裝完之后,我們就需要在增加運(yùn)行鉤子函數(shù)。等鉤子函數(shù)這樣就簡單的成功對代碼進(jìn)行效驗(yàn)了,當(dāng)然這邊更進(jìn)一步的可以使用這個可以將取得所有被提交的文件依次執(zhí)行寫好的任務(wù)。 一個項目是會有多個成員來開發(fā)的,因此統(tǒng)一開發(fā)規(guī)范是很有必要的,不然每個人都有自己的風(fēng)格,同步之后代碼都會報錯。我這邊是用Vscode編譯器的。 首先用vue-cli3.0創(chuàng)建一個工...
閱讀 2780·2023-04-25 20:19
閱讀 2031·2021-11-24 09:38
閱讀 1796·2021-11-16 11:44
閱讀 4976·2021-09-02 15:40
閱讀 1481·2019-08-30 15:55
閱讀 2100·2019-08-30 15:52
閱讀 3881·2019-08-29 17:20
閱讀 2449·2019-08-29 13:48