打包釋出自己的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
大致就是這樣了,第一版比較倉促,後序功能可能會慢慢的進行新增的。