首頁 web前端 js教程 Nodejs發布自己的npm套件並製作成命令列工具步驟詳解

Nodejs發布自己的npm套件並製作成命令列工具步驟詳解

May 21, 2018 pm 01:56 PM
javascript nodejs 命令列

這次帶給大家Nodejs發布自己的npm套件並製作成命令列工具步驟詳解,Nodejs發布自己的npm套件並製作成命令列工具的注意事項有哪些,以下就是實戰案例,一起來看一下。

<span style="font-family:Arial, Helvetica, sans-serif;background-color:rgb(255,255,255);">近日当我在使用npm上已经存在的一个包时,发现它有bug;于是决定自己实现这个功能,自己写一个npm包。</span>
登入後複製

下面我記錄自己的實作過程。

1. npm init

#選擇一個資料夾,然後用命令列cd進去,然後執行npm init ,這時會產生一長串表單,根據自己的實際情況填寫內容

name:填寫你這個包的名字,預設是你這個資料夾的名字。不過這裡要著重說一下,最好先去npm找找有沒有同名的包包。最好的測試方式就是,在命令列裡面輸入npm install 你要取的名字,如果報錯,那麼很好,npm上沒有跟你同名的包,你可以放心大膽地把包發佈出去。如果成功下載下來了。 。 。那麼很不幸,改名字吧。 。 。

version:你這個套件的版本,預設是1.0.0

#description:其實我也不知道是什麼,按回車就好了。 。 。 ,這個用一句話描述你的套件是幹嘛用的

entry point:入口檔案,預設是Index.js,你也可以自己填入你自己的檔名

test command:測試指令,這個直接回車就好了,因為目前還不需要這個。

git repository:這個是git倉庫地址,如果你的包是先放到github上或其他git倉庫裡,這時候你的資料夾裡面會存在一個隱藏的. git目錄,npm會讀到這個目錄作為這一項的預設值。如果沒有的話,直接回車繼續。

keyword:這個是一個重點,這個關係到有多少人會搜到你的npm套件。盡量使用貼切的關鍵字作為這個包的索引。我這個包嘛,第一個是在express下工作的,然後又是一個插件plugin,然後又是一個註冊路由route用的,而這個路由又是基於文件目錄dir,所以很好就得出我的包的索引關鍵字。

author:寫你的帳號或你的github帳號吧

license:這個直接回車,開源檔案來著。 。 。

然後它就會問你Are you ok?

回車Ok!

然後我們回到我們的文件目錄裡面去看一看,發現多出來一個package.json文件

然後,在目錄下新建一個index.js文件,或者你剛剛修改了那個entry point的值,那麼你這個檔名也跟著改為那個值。

我的npm工程目錄結構就是這樣的,注意其中的bin資料夾是我為了製作命令列工具才產生的,後面會講到怎麼產生命令列工具;當然,如果那不想產生命令列工具,這個資料夾就不需要了。

因為我把封裝好的程式碼都丟在lib裡面,所以,index.js裡面也就一句話:

module.exports=require('./lib')
登入後複製

然後,最重要的,寫好README.md,一個要為大家描述你的套件的markdown文件,如果大家都不知道你的程式碼是做什麼的,會有人去下載你的程式碼嗎?哦,對了,最好寫英文。

2. npm publish

#寫完自己的npm包,測試運行沒問題後就可以發佈到npm上

首先得註冊個npm帳號

用npm指令登陸一下

然後,在你的目錄下使用npm publish

注意:一般情況下,一旦你要修改你已經發布後的程式碼,然後又要執行發布操作,務必到package.json裡面,把version改一下,例如從1.0.0改為1.0.1,然後在執行npm publish,這樣就可以成功發布了。

3. 產生命令列工具

在使用 Nodejs 过程中,有很多包都支持全局安装,提供一个命令,然后在命令行我们就可以完成一些任务。有时候我们也需要开发这样的命令工具。在Node.js 中发现弄个命令行工具特别轻松。我使用的是commander包来生成命令行工具

$ npm install commander
登入後複製

然后cd到bin目录下,新建一个.js文件(名字自取),编写代码,在js文件顶部加上#!/usr/bin/env node

例如我的geAsar.js:

#!/usr/bin/env node
var asar = require('../lib/geAsar')
var program = require('commander');
program.version('v' + require('../package.json').version)
  .description('Manipulate asar archive files')
program.command('pack <dir> <output>')
  .alias('p')
  .description('create asar archive')
  .action(function (dirpath, output) {
   asar.geAsar(dirpath,output);
   console.log(output+"文件成功生成");
  })
program.parse(process.argv)
if (program.args.length === 0) {
 program.help()
}
登入後複製

然后还需在package.json中添加

"bin": { 
 "geAsar": "./bin/geAsar.js" 
 },
登入後複製

运行 node bin/geAsar.js 会显示当前文件夹下的所以文件和文件夹名。这个玩意儿真的跑起来了.

全局运行命令调试

install
登入後複製

如果在项目目录下运行没有问题,可以将当前目录模块安装到全局,也可以采用此方法来更新你的命令行工具

sudo npm install . -g

link

或者目录输入 npm link 会自动添加全局的 symbolic link ,然后就可以使用自己的命令了。 (我用的是这个)

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

php生成随机数字、字母或数字字母混合的字符串

php裁剪图片为固定大小步骤详解

以上是Nodejs發布自己的npm套件並製作成命令列工具步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

nodejs是後端框架嗎 nodejs是後端框架嗎 Apr 21, 2024 am 05:09 AM

Node.js 可作為後端框架使用,因為它提供高效能、可擴展性、跨平台支援、豐富的生態系統和易於開發等功能。

nodejs怎麼連接mysql資料庫 nodejs怎麼連接mysql資料庫 Apr 21, 2024 am 06:13 AM

要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

nodejs中的全域變數有哪些 nodejs中的全域變數有哪些 Apr 21, 2024 am 04:54 AM

Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 Apr 21, 2024 am 05:18 AM

Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

nodejs和java的差別大嗎 nodejs和java的差別大嗎 Apr 21, 2024 am 06:12 AM

Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

nodejs是後端開發語言嗎 nodejs是後端開發語言嗎 Apr 21, 2024 am 05:09 AM

是的,Node.js 是一種後端開發語言。它用於後端開發,包括處理伺服器端業務邏輯、管理資料庫連接和提供 API。

nodejs和java選哪個 nodejs和java選哪個 Apr 21, 2024 am 04:40 AM

Node.js 和 Java 在 Web 開發中各有優劣,因此選擇取決於專案需求。 Node.js 擅長即時應用程式、快速開發和微服務架構,而 Java 則在企業級支援、效能和安全性方面佔優。

nodejs可以寫前端嗎 nodejs可以寫前端嗎 Apr 21, 2024 am 05:00 AM

是的,Node.js可用於前端開發,主要優勢包括高效能、豐富的生態系統和跨平台相容性。需要考慮的注意事項有學習曲線、工具支援和社群規模較小。

See all articles