摘要:但是,我們發布之前,需要做一些持續集成和單元測試,用來保證代碼的正確性,穩定性。
Javascript 那么流行,作為一個前端開發者,或者前端入門者,發布一個正式可用的 Javascript 模塊,對于自己來說應該成長很大。下面就以一個簡單的 Javascript 模塊 filesize.js 來介紹 github、travis-ci、npm 這些內容的組合使用。
一、目標概覽本文將使用 filesize.js 這個作為介紹,這個是一個非常簡單的 js 庫,總共代碼也不到 20 行,但是功能完善,可以生產使用。事實上 npm 上有不少簡單到幾行代碼搞定的模塊。
首先發布一個 js 模塊,肯定需要時代碼開源,所以必須使用到 Github 作為代碼管理。發布到 npm 能不能不開源呢,當然可以,但npm install 得到之后就是你的源碼。
發布一個 js 模塊,需要讓別人使用,良好的測試必不可少(很多項目有下圖的綠色小圖標),所以需要給你的項目寫完善的測試用例(testcase),然后利用 Github 上第三方的 ci 工具來執行,travis-ci 就是其中一個用的比較多的。
代碼測試完畢,沒有任何問題之后,可以 npm 發布模塊了。
我們 filesize.js 達到的效果就是這樣的:
并且可以直接 npm install filesize.js 安裝下載。下面分別介紹說明。
二、Github 項目初始化首先在 Github 上創建項目,注意想好項目的名字,名字最好能夠和之后 npm 發布的模塊名字相同(npm 模塊名字不能和其他人已經發布的名字重復)。后面關于 Github 如果提交代碼這些請自行找其他文章學習。
需要強調的是:
注意完善的 README.md 文檔,可以文檔先行,這樣可以在寫代碼之前想好你這個模塊的 API 方法等。
可以嘗試先寫 testcase(測試先行),當然不強制,提前寫 case,無法運行測試其實也挺耗時的。
注意整理代碼結構,對于 js 模塊代碼,一般是:
package.json 是 npm 模塊相關的配置;
glupfile.js 是 glup 的配置文件,我這里主要用來壓縮代碼;
README.md 文檔說明;
.gitignore 忽略 git 版本管理的文件和目錄(一些無關緊要的全部不要上傳 git);
.travis.yml travis-ci配置文件,后面會說。
三、Javascript 模塊 & npm對于一個 js 模塊,都有 package.json 文件,這個是一個嚴格要求的 json 格式,任何不符合要求的都會在執行 npm 命令的時候報錯。比如 filesize.js 的該文件內容如下:
這其中比較重要的就是 name/officialName、keywords、devDependencies、dependencies、scripts、main、version;
name:npm 發布之后的名字,一般和前述 github 項目名字保持一致,且不能和已有的 npm 模塊重名;
keywords:npm 模塊的關鍵字,用于在 npmjs.com 上檢索;
devDependencies:開發依賴,比如會用到 glup 壓縮混淆,tape 進行單元測試,jshint 進行靜態代碼檢查;這些都是開發過程中需要的依賴,非開發環境可以不用安裝;
dependencies:模塊的依賴庫,用戶在使用你的這個模塊的時候,也會附帶進行安裝下載;filesize.js模塊很簡單,并沒有任何依賴。
scripts:配置一些指令,比如:npm run lint,npm run test,npm run build:分別是代碼檢查,執行測試用例,build 壓縮庫
main:這個是 package.json 中非常重要的配置,標志引用這個模塊的入口在哪里;
version:模塊的版本,每次發布的時候,比如保證版本不一樣。
除了這些配置,package.json 還有其他的更多配置,大家可以去搜索學習一下,一般有了這些配置項,就夠了,就可以進行 npm publish 來發布模塊。
但是,我們發布之前,需要做一些持續集成和單元測試,用來保證代碼的正確性,穩定性。這個就是使用到 travis-ci 了。
四、接入 travis-ci 持續集成持續集成是什么?簡單來說就是盡快,盡可能早的進行代碼的正確性驗證(也就是測試),那么我們每次在 github push代碼的時候就運行一下測試用例,這個是不是很快,很早,也就是持續集成,對于一些簡單的 js 模塊,我們做一些簡單的單元測試就夠夠的了。
在 github 創建項目之后,可以打開 https://travis-ci.org/,并使用 Github 授權登陸,然后自己的 Account 菜單中勾上需要接入 travis-ci 的項目,如下圖所示:
如果看不到新創建的項目,可以右上角刷新一下。開啟之后,travis-ci 會 hook 住你 git push 命令,然后根據你項目中的 .travis.yml 配置文件來執行 npm test(npm run test 的簡寫)進行測試,并捕獲檢測結果來判斷 測試用例 執行成功與否。例如 filesize.js的 .travis.yml 配置如下所示:
表示執行在 nodejs 環境,兩個不同的大版本分別執行以下,一般選擇 4.x 版本即可。那么每次 push 代碼之后,都會進行自動觸發 ci 任務,如下圖所示:
然后你就可以把這個小綠色圖表放到你的 README.md 文件中了。
五、發布 publish項目創建了,package.json 配置好了,代碼寫完了,文檔完善了,ci 執行沒有錯誤了,那么就可以發布出去了。怎么發布,非常簡單,如果你沒有 https://www.npmjs.com/ 的賬號,注冊一個就好了,和一般的網站注冊并沒有什么區別。
有了賬號之后,在項目代碼根目錄,執行:
npm publish
控制臺會要求你輸入 npmjs 網站的郵箱和密碼,輸入即可,然后等著出現 發布成功即可,一般出現:filesize.js@1.0.1 這樣格式的字符串即可,然后去 npmjs 網站刷一下試試看。
六、其他如果你做了一個很好用的有創意的模塊,可以給你的模塊做一個簡單炫酷的主頁來顯示用法和 API 接口吧。本文中作為示例的項目 filesize.js 是一個超級大輪子,就是為了寫這篇文章而做了,當然也可以用戶開發生成環境。
最后安利一下,我的 Github 主頁:https://github.com/hustcc,ID是 hustcc,因為我是一個huster,正好之前注冊了hust.cc域名,所以有了這個 github id 。
有哪些輪子:
莆田系瀏覽器插件: Chrome瀏覽器插件——打開莆田系醫院網站,發出警告提醒、顯示醫院信息(莆田系哪一波潮的時候做的,用戶量還挺多的)。
timeago.js: timeago.js is a tiny(~1.7kb) library used to format date with *** time ago statement. eg: "3 hours ago". No dependency & localization & tiny.
echarts-for-react: baidu Echarts(v3.0) components for React wrapper. 一個簡單的echarts(v3.0)的react封裝。
我是一個后臺開發者,最近在入門前段開發,深度Github、輪子愛好者。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80473.html
摘要:不過,根據伯克利大學的這篇文章來看,擁有豐富的開源庫,是開發者在選擇一門開發語言時,最重要的因素。擁有超過個可用的開源庫,是目前世界上最大的開源庫集合。月份,我們發布了。這和年的情況是相反的。在的調查中,超過的受訪者表示他們正在使用。 showImg(https://segmentfault.com/img/bVblvke?w=693&h=300); 原文標題:This year in...
摘要:下面我就以最近開發的數字鍵盤為例,一一列出具體步驟寫基礎模塊代碼注冊賬號配置配置添加單元測試完善發布足可以完成一個,是為了開發一個高質量的?;照路謩e表示是否構建成功代碼測試覆蓋率版本號下載量開源證書,看起來逼格滿滿有木有。 寫在前面 沒有發布過npm包的同學,可能會對NPM對開發有一種蜜汁敬畏,覺得這是一個很高大上的東西。甚至有次面試,面試官問我有沒有發過npm包,當時只用過還沒寫過,...
閱讀 3197·2021-09-06 15:02
閱讀 2243·2019-08-30 15:48
閱讀 3439·2019-08-29 11:08
閱讀 3281·2019-08-26 13:55
閱讀 2440·2019-08-26 13:35
閱讀 3162·2019-08-26 12:11
閱讀 2598·2019-08-26 11:48
閱讀 881·2019-08-26 11:42