摘要:其實有點耗時間,所以我們做了一下自動化初步自動化修改中的初始化將部分腳本寫入到中詢問是否全部使用是否默認使用開始安裝依賴正在安裝正在安裝清除掉以前配置的只要兩部安裝即可提交代碼的時候直接執行即可更智能摸索中
先丟出最終版的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: "是否默認使用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" } }); }步驟 一、創建工具項目
1.使用git/gitlab創建一個空的倉庫
2.在空倉庫中添加index.js 內容如下
// 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" } });使用工具到相應的項目(假設插件名稱my-commit)
1.先發布你的工具項目到npm,相當于創建一個npm包、具體怎么發布 這里不做贅述,網上很多教程
2.安裝工具(假設插件名稱my-commit)
npm install my-commit --save-dev
3.配置
需要在package.json的script中添加如下
// my-ci 是自己定義的寫成什么都可以 "my-ci": "./node_modules/.bin/my-commit"
4.配置之后 執行了git add .之后 執行npm run my-ci 將會出現選填補充信息的選項
如果覺得git add.之后再執行 npm run my-ci 有點麻煩,可以直接改成
// my-ci 是自己定義的寫成什么都可以 "my-ci": "git add. && ./node_modules/.bin/my-commit"
5 因為以上命令存在不同系統路徑不兼容問題 需要加入 cross-env
npm install cross-env --save-dev
6 再次修改package.json
// my-ci 是自己定義的寫成什么都可以 "my-ci": "git add. && cross-env ./node_modules/.bin/my-commit"
當需要提交代碼的時候,不用執行git add . 直接執行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" } });
這個時候 重新發npm包之后再安裝到自己的項目下,執行提交的時候
8 為了增強校驗功能,加入eslint對文件進行
這個有點復雜,需要通過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的具體路徑是可以自己配置 // 校驗規則是基于當前目錄的.eslintrc.js 文件,如果有些規則不想要,就配置這個文件
這個時候我們提交代碼的時候再輸入基本的信息之后會執行一個eslint的代碼規則
總結以上配置文件 我們需要
安裝的庫有
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" ] },
如果每個項目都這么玩。其實有點耗時間,所以我們做了一下自動化
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: "是否默認使用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
提交代碼的時候直接執行 npm run my-ci 即可
11 更智能(摸索中)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98628.html
摘要:但是,畢竟是人,哪天忙了就會忘記提交,所以想著能不能實現在自己阿里云服務器系統上,設置,定制下命令,實現每天定點自動提交。 前言 進入自己github主頁會看到自己的提交記錄,如果某天沒有提交記錄,那天的小方框就顯示灰色。強迫癥的我,每次進來看著就感覺不爽,想著自己每天記得提交點東西,爭取像阮一峰大神一樣,每天都有提交記錄。 showImg(https://www.wty90.co...
摘要:設置什么是本用于介紹托管在的項目,不過,由于他的空間免費穩定,用來做搭建一個博客再好不過了。你可以通過來訪問你的個人主頁。執行過程中可能需要讓你輸入賬戶的用戶名及密碼,按照提示操作即可。推薦使用騰訊公益。 系統環境配置 要使用Hexo,需要在你的系統中支持Nodejs以及Git,如果還沒有,那就開始安裝吧! 安裝Node.js 下載Node.js參考地址:安裝Node.js 安裝Git...
摘要:打造個人團隊適用的開源項目規范是一個用來優化托管在上的多代碼庫的工作流的一個管理工具可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發布時需要手動維護多個包的問題。 打造個人or團隊適用的開源項目規范 lerna Lerna 是一個用來優化托管在gitnpm上的多package代碼庫的工作流的一個管理工具,可以讓你在主項目下管理多個子項目,從而解決了多個包互相依賴,且發布...
摘要:為此我們需要安裝這個是用于提交代碼的鉤子函數安裝完之后,我們就需要在增加運行鉤子函數。等鉤子函數這樣就簡單的成功對代碼進行效驗了,當然這邊更進一步的可以使用這個可以將取得所有被提交的文件依次執行寫好的任務。 一個項目是會有多個成員來開發的,因此統一開發規范是很有必要的,不然每個人都有自己的風格,同步之后代碼都會報錯。我這邊是用Vscode編譯器的。 首先用vue-cli3.0創建一個工...
閱讀 2676·2023-04-25 20:19
閱讀 1930·2021-11-24 09:38
閱讀 1632·2021-11-16 11:44
閱讀 4341·2021-09-02 15:40
閱讀 1317·2019-08-30 15:55
閱讀 2022·2019-08-30 15:52
閱讀 3759·2019-08-29 17:20
閱讀 2247·2019-08-29 13:48