1. 程式人生 > >打包釋出自己的nodejs包

打包釋出自己的nodejs包

                     

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

檢視詳情

初衷

說來也不是什麼高大上的東西,就是個簡單的字串格式化的實現。靈感還是源自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

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

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

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

打包釋出

回到正題,下面講講我的打包釋出的流程。

目錄

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

E:\Code\Nodejs\learn\my-work\string\str-format>tree /f .卷 文件 的資料夾 PATH 列表卷序列號為 0000-4823E:\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 publish來發布你的包了。 進入到模組的目錄下,輸入命令npm publish,如果出現下面的資訊,則說明你需要一個登入會話,通過npm adduser進行登入即可。

E:\Code\Nodejs\learn\my-work\string\str-format>npm publishnpm ERR! Windows_NT 10.0.10586npm ERR! argv "D:\\Software\\Nodejs\\node.exe" "D:\\Software\\Nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish"npm ERR! node v6.10.2npm ERR! npm  v3.10.10npm ERR! code ENEEDAUTHnpm ERR! need auth auth required for publishingnpm 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 adduserUsername: marksinobergPassword:Email: (this IS public) [email protected] 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

核實

查詢包

檢視詳情內容,預設顯示書寫的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

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