1. 程式人生 > >打包發布自己的nodejs包

打包發布自己的nodejs包

查看 clas node init blog mat 老師 詳情 special

下午的時候寫了一篇關於一個不成熟的模板引擎的博客,覺得還是不太夠,然後就封裝了起來,做成了一款開發包。最後為了嘗試一下如何發布自己的包,就又完善了一下。做此文以記之。

技術分享圖片


初衷

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

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

然後對於其他語言來說,比如C, Nodejs,Java等也都有類似的實現,但是不是很好用,尤其是記憶一大串什麽%s

, %d, %f,之類的,一點都不好玩了。

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

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

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

功能

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

const str_format = require(‘str-format‘
); var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}."; var params = [‘遊客‘, {address: "冰雹工作室"}, ‘朝陽區‘, {china: {beijing: ‘北京‘}}]; var result = str_format.format(str, params); console.log(result);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

運行一下代碼,會有如下結果。

Hello 遊客!Welcome to 冰雹工作室!
Are you come from
朝陽區 or 北京.
  • 1
  • 2

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

使用

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

npm

npm install str-format --save
  • 1

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

var str_format = require(‘str-format‘);
  • 1

local module

第二種就是當作本地包來使用,具體可以這麽做:

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

var str_format = require(‘./str-format/index‘);
  • 1

這樣也能使用這個模塊的相關功能了。

打包發布

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

目錄

創建好一個目錄,我的目錄結構如下:

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語法描述的模塊信息

沒有子文件夾
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

package.json

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

npm init
  • 1

然後根據終端裏面的提示信息進行填寫即可。

發布

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

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

有了登錄的會話之後就可以發布了。如下:

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

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ [email protected]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

取消發布

取消發布的前提也需要在登錄會話下進行。

npm unpublish
  • 1

如果不成功,或許需要強制取消。

npm unpublish --force
  • 1

取消發布之後,如果要再次發布,那麽需要改變一下版本號。比如我之前是1.0.0,如果我取消發布之後想再發布一次,那麽版本號就需要變一下了。比如可以是1.0.1。沒什麽嚴格的要求,但是版本號默認遞增順序。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publish
+ [email protected]
  • 1
  • 2

核實

發布完成之後就可以到下面的網址進行搜索,看看你的包到底發布成功了沒有。
https://www.npmjs.com/package/package

技術分享圖片

查看詳情內容,默認顯示書寫的README.md文件的內容。
技術分享圖片

後話

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

數組類型

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

var str = "Hello {}!Welcome to {address}!\nAre you come from {} or {china.beijing}.";
var params = [‘遊客‘, {address: "冰雹工作室"}, [‘朝陽區‘, ‘海澱區‘], {china: {beijing: ‘北京‘}}];
var result = str_format.format(str, params);
console.log(result);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

結果只會匹配第一個數據項:

Hello 遊客!Welcome to 冰雹工作室!
Are you come from 朝陽區 or 北京
  • 1
  • 2

大致就是這樣了,第一版比較倉促,後序功能可能會慢慢的進行添加的。

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

打包發布自己的nodejs包