打包發(fā)布自己的nodejs包

下午的時候?qū)懥艘黄P(guān)于一個不成熟的模板引擎的博客,覺得還是不太夠,然后就封裝了起來,做成了一款開發(fā)包。最后為了嘗試一下如何發(fā)布自己的包,就又完善了一下。做此文以記之。

查看詳情

初衷

說來也不是什么高大上的東西,就是個簡單的字符串格式化的實現(xiàn)。靈感還是源自Python。寫過Python代碼的應(yīng)該都知道字符串類有這么一個方法。

string = "hello {}".format("郭璞")  # hello 郭璞
string = "hello {username}".format(username="郭璞") # hello 郭璞

然后對于其他語言來說,比如C, Nodejs,Java等也都有類似的實現(xiàn),但是不是很好用,尤其是記憶一大串什么%s, %d, %f,之類的,一點(diǎn)都不好玩了。

當(dāng)然了,你也可以不用這些字符串格式化的方法,單純的使用字符串相加的方式。比如:

str = "Hello" + username + ", are you " +anothername+ "?"; 

這還是變量很少的情況,試想一下。如果你有20個變量要與字符串進(jìn)行拼接,那該是個什么工作量。不出錯還好,一旦出錯,罵街的?都有了。況且在Node中,單引號和雙引號都可以正常的表示字符串對象,這只能讓你的字符串拼接顯得更加舉步維艱。

功能

下面給個小例子,一定能讓你眼前一亮。

const str_format = require('str-format');

var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}.";
var params = ['游客', {address: "冰雹工作室"}, '朝陽區(qū)', {china: {beijing: '北京'}}];
var result = str_format.format(str, params);
console.log(result);

運(yùn)行一下代碼,會有如下結(jié)果。

Hello 游客!Welcome to 冰雹工作室!
Are you come from 朝陽區(qū) or 北京.

就跟Python中原生處理字符串格式化一樣,這樣寫起來字符串就會變得很方便啦。

使用

使用它很方便,有這么兩種方式:

npm

npm install str-format --save

然后就可以在你的代碼中使用如下語法來使用它了。

var str_format = require('str-format');

local module

第二種就是當(dāng)作本地包來使用,具體可以這么做:

https://github.com/guoruibiao/have-fun-in-node/tree/master/str-format
下載完整代碼,然后通過本地引用的方式來加載。

var str_format = require('./str-format/index');

這樣也能使用這個模塊的相關(guān)功能了。

打包發(fā)布

回到正題,下面講講我的打包發(fā)布的流程。

目錄

創(chuàng)建好一個目錄,我的目錄結(jié)構(gòu)如下:

E:\Code\Nodejs\learn\my-work\string\str-format>tree /f .
卷 文檔 的文件夾 PATH 列表
卷序列號為 0000-4823
E:\CODE\NODEJS\LEARN\MY-WORK\STRING\STR-FORMAT
    index.js     # 功能模塊
    package.json # npm init 命令生成的文件
    README.md    # Markdown語法描述的模塊信息

沒有子文件夾

package.json

如上面目錄中看到的package.json文件,其是由npm init命令生成的。在這個目錄下打開命令行輸入

npm init

然后根據(jù)終端里面的提示信息進(jìn)行填寫即可。

發(fā)布

發(fā)布之前確保自己有npm的賬號。如果沒有,就到
https://www.npmjs.com/signup
來注冊即可。

注冊完畢之后就可以使用npm publish來發(fā)布你的包了。
進(jìn)入到模塊的目錄下,輸入命令npm publish,如果出現(xiàn)下面的信息,則說明你需要一個登錄會話,通過npm adduser進(jìn)行登錄即可。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "D:\\Software\\Nodejs\\node.exe" "D:\\Software\\Nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"
npm ERR! node v6.10.2
npm ERR! npm  v3.10.10
npm ERR! code ENEEDAUTH

npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

npm ERR! Please include the following file with any support request:
npm ERR!     E:\Code\Nodejs\learn\my-work\string\str-format\npm-debug.log

有了登錄的會話之后就可以發(fā)布了。如下:

E:\Code\Nodejs\learn\my-work\string\str-format>npm adduser
Username: marksinoberg
Password:
Email: (this IS public) 1064319632@qq.com
Logged in as marksinoberg on https://registry.npmjs.org/.

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ str-format@1.0.0

這樣我便發(fā)不了自己的第一個模塊了。

取消發(fā)布

取消發(fā)布的前提也需要在登錄會話下進(jìn)行。

npm unpublish

如果不成功,或許需要強(qiáng)制取消。

npm unpublish --force

取消發(fā)布之后,如果要再次發(fā)布,那么需要改變一下版本號。比如我之前是1.0.0,如果我取消發(fā)布之后想再發(fā)布一次,那么版本號就需要變一下了。比如可以是1.0.1。沒什么嚴(yán)格的要求,但是版本號默認(rèn)遞增順序。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ str-format@1.0.1

核實

發(fā)布完成之后就可以到下面的網(wǎng)址進(jìn)行搜索,看看你的包到底發(fā)布成功了沒有。
https://www.npmjs.com/package/package

查找包

查看詳情內(nèi)容,默認(rèn)顯示書寫的README.md文件的內(nèi)容。

查看詳情

后話

需要注意的是在字符串中也有不能出現(xiàn)的類型,這跟Python保持了一致。

數(shù)組類型

const str_format = require('str-format');

var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}.";
var params = ['游客', {address: "冰雹工作室"}, ['朝陽區(qū)', '海淀區(qū)'], {china: {beijing: '北京'}}];
var result = str_format.format(str, params);
console.log(result);

結(jié)果只會匹配第一個數(shù)據(jù)項:

Hello 游客!Welcome to 冰雹工作室!
Are you come from 朝陽區(qū) or 北京

大致就是這樣了,第一版比較倉促,后序功能可能會慢慢的進(jìn)行添加的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey閱讀 6,370評論 2 36
  • 不見去年梁上燕,海棠枝下檐戶?;ㄗ匀缬昶鸫耗?,夕陽影里,笑靨群芳妒。 莫惜春歸無覓處,今朝去后還復(fù)。桃花掩映落英語...
    St黃不二閱讀 265評論 0 0
  • 你存在我的世界里 每次從圖書館回來寢室 視力太高的緣故吧 一眼就看到了你 你還很小很小 若不留心誰人知道你存在 欲...
    叢中笑_38ea閱讀 335評論 0 0

友情鏈接更多精彩內(nèi)容