国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

怎么開發并發布一個可用的 JavaScript 模塊 ?

TANKING / 988人閱讀

摘要:但是,我們發布之前,需要做一些持續集成和單元測試,用來保證代碼的正確性,穩定性。

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、keywordsdevDependenciesdependencies、scriptsmainversion;

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

相關文章

  • 關于JavaScript, NPM官方發布了2018年回顧以及2019年預測

    摘要:不過,根據伯克利大學的這篇文章來看,擁有豐富的開源庫,是開發者在選擇一門開發語言時,最重要的因素。擁有超過個可用的開源庫,是目前世界上最大的開源庫集合。月份,我們發布了。這和年的情況是相反的。在的調查中,超過的受訪者表示他們正在使用。 showImg(https://segmentfault.com/img/bVblvke?w=693&h=300); 原文標題:This year in...

    dadong 評論0 收藏0
  • 手把手教你發布一個無依賴多類型高質量鍵盤npm包

    摘要:下面我就以最近開發的數字鍵盤為例,一一列出具體步驟寫基礎模塊代碼注冊賬號配置配置添加單元測試完善發布足可以完成一個,是為了開發一個高質量的?;照路謩e表示是否構建成功代碼測試覆蓋率版本號下載量開源證書,看起來逼格滿滿有木有。 寫在前面 沒有發布過npm包的同學,可能會對NPM對開發有一種蜜汁敬畏,覺得這是一個很高大上的東西。甚至有次面試,面試官問我有沒有發過npm包,當時只用過還沒寫過,...

    vboy1010 評論0 收藏0
  • 前端模塊化雜談

    摘要:并不是使用安裝的模塊我們就可以使用同樣的方式使用任何一個模塊,使用某種工具將這些模塊打包發布作為事實上的前端模塊化標準,或可以出來解救我們。目前比較拿的出手的,也就是的模塊化,比如或者等等,分別可以使用和。 Teambition是一家追求卓越技術的公司,我們工程師都很Geek,我們使用了很多新潮的,開源的技術。同時我們也貢獻了很多開源的項目。我們希望能夠把一些技術經驗分享給大家。...

    yacheng 評論0 收藏0
  • 前端模塊化雜談

    摘要:并不是使用安裝的模塊我們就可以使用同樣的方式使用任何一個模塊,使用某種工具將這些模塊打包發布作為事實上的前端模塊化標準,或可以出來解救我們。目前比較拿的出手的,也就是的模塊化,比如或者等等,分別可以使用和。 Teambition是一家追求卓越技術的公司,我們工程師都很Geek,我們使用了很多新潮的,開源的技術。同時我們也貢獻了很多開源的項目。我們希望能夠把一些技術經驗分享給大家。...

    li21 評論0 收藏0
  • PHP小知識點

    摘要:那些瑣碎的知識點作者記錄的的很奇特很難記的知識點。易錯知識點整理注意和的區別中和都是輸出的作用,但是兩者之間還是有細微的差別。今天手頭不忙,總結一下,分享過程中掌握的知識點。 深入理解 PHP 之:Nginx 與 FPM 的工作機制 這篇文章從 Nginx 與 FPM 的工作機制出發,探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協同工作的。 PHP 那些瑣碎的知識...

    hover_lew 評論0 收藏0

發表評論

0條評論

TANKING

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<