1. 程式人生 > >新手開發自己的npm包

新手開發自己的npm包

怎麼開發一個npm包

一、註冊npm賬號

  • 怎麼將程式碼提到github,大家都知道需要一個github賬號
  • 同樣,開發一個npm包,當然也需要一個npm賬號,將npm包釋出到npm的託管伺服器
  • 該例項包含了模組的區域性呼叫和全域性呼叫兩種方式

二、開發npm包

1.目錄構建

  • npm init
  • 專案結構:npm包實際是一個存檔檔案,即一個目錄直接打包為.zip或tar.gz格式的檔案,安裝後解壓還原為目錄。完全符合CommonJS規範的包目錄應該包含如下這些檔案。
      .
      ├── bin           //命令配置
      ├── README.md     //說明文件
├── index.js //主入口 ├── src //功能檔案 ├── package.json //包資訊 └── test //測試用例

生產package.json檔案,裡面要注意引數,repository:”“一定要填寫倉庫地址,因為最後npmjs,會從線上倉庫獲取。
證明是否登入成功:
 

npm who am i

2.開發模組

  • 入口index.js模組
    非全域性安裝(npm install xxx),則多有的函式介面都通過index.js暴露給外部呼叫
      /**
      * Hello World
      * @function
hello **/
const hello = function(key){ console.log('Hello World!'); }; exports.hello = hello;
  • init.js模組
      const exec = require('child_process').exec;

      exports.run = function(name) {
          //初始化一個空資料夾
          exec('mkdir ' + name,function() {
console.log('king init命令已執行...'); }); };
  • start.js模組
     const express = require('express');
      const app     = express();

      exports.run = function(options) {
          const port = options.port || 3000;
          app.listen(port);
          console.log('服務已啟動,正在監聽' + port + '埠...');
      };

3.配置全域性命令

bin目錄下寫配置程式碼

  • cli.js自定義命令,主要通過引入commander模組去處理,包括命令描述、引數及執行動作
  • king.js檔名稱應與全域性命令king保持一致,做命令的入口,具體看demo

三、釋出npm包

1.npm login

npm login  //沒有註冊賬號的,npm adduser

2.npm publish

npm publish .

如果你以後修改了程式碼,然後想要同步到 npm 上的話請修改 package.json 中的 version 然後再次 publish,更新的版本上傳的版本要大於上次

1.使用 cnpm 的注意報錯:

    no_perms Private mode enable, only admin can publish this module

  設定回原本的就可以了:

 npm config set registry http://registry.npmjs.org 

  2.npm包package.json中registory屬性一定要填寫,每次publish npm時package.json中version版本一定要大於上一次。

  3.npm publish failed put 500 unexpected status code 401這樣的報錯資訊,往往是沒有登入成功,操作npm login

管理包許可權:

  通常,一個包只有一個擁有許可權進行釋出。如果需要多人進行釋出,可以使用npm owner 命令幫助你管理包的所有者:

 npm owner ls eventproxy

  使用這個命令,也可以新增包的擁有者,刪除一個包的擁有者:

npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package name>

四、全域性安裝和區域性安裝

1.區域性安裝

  • 所有的函式功能介面都由index.js暴露給外部
  • src裡面可以放功能程式碼,src –> index.js只做output,暴露給外部呼叫

2.全域性安裝

  • 包全域性安裝的情況,一般是做自動化工具,關鍵在於配置全域性命令,與index.js無關
  • 通過bin目錄下與全域性命令相同的js檔案(如king.js)處理command的輸入【如:king start】
  • 來,讓我們看看執行king –help的效果

五、常見問題

1. npm publish出錯

 npm ERR! publish Failed PUT 403
    npm ERR! Darwin 16.0.0
    npm ERR! argv "/usr/local/Cellar/node/5.6.0/bin/node" "/usr/local/bin/npm" "publish"
    npm ERR! node v5.6.0
    npm ERR! npm  v3.10.3
    npm ERR! code E403

    npm ERR! "You cannot publish over the previously published version 0.0.43." : npm-develop
    npm ERR!
    npm ERR! If you need help, you may report this error at:
    npm ERR!     <https://github.com/npm/npm/issues>

    npm ERR! Please include the following file with any support request:
    npm ERR!     /Volumes/work/private/github/npm-develop/npm-debug.log

沒有更新package.json的版本號,每次的版本號必須大於上次,否則無法publish

2. 採用sudo npm publish

password應該輸入的是本機開機密碼,非npm賬號密碼

3. 全域性命令無效

package.json中的bin命令配置,屬性值應該和指令碼名稱一致

"bin": {
  "king": "./bin/king.js"
}
  1. 釋出包過程可能會遇到很多問題,我印象比較深刻的是npm ERR publish 403
    You do not have permission to publish ‘somepackage’.Are you logged in as
    the corrent user?:somepackage
    意思是我沒許可權釋出somepackage,並問我是否使用了正確的賬號,
    那也許是somepackage被別人釋出過了吧,所以我修改了package.json檔案
    把name改成somepackage_xiaoguoping.

6.驗證

這裡先使用npm install 你釋出出去的包的名字,然後看看命令列裡面是不是把你的包下載了下來。如果下載成功,就說明你的包已經成功地釋出在npm上了。

或者你親自上npm這個網站(該帶梯子的請自帶梯子),然後在搜尋框裡面輸入你剛才寫下來的關鍵字。。。不過,如果你的包的星星(點贊)數量不夠的話應該會排到很尾。。。所以我建議你用包名直接搜(反正我用關鍵字找找不到我的包。。。):

在你執行完npm init這個步驟之後,你把程式碼扔進這個包裡面後,就形成了一個本地的包,可以直接把這個包扔到專案裡面node_module這個資料夾裡面的,然後在你的專案裡面就可以直接:

  var a=require('你的包名');

直接使用包名引入,不用檔案路徑了,就像引入fs或者http模組一樣

測試完確定沒有什麼bug之後再執行npm publish哦

相關推薦

新手開發自己npm

怎麼開發一個npm包 一、註冊npm賬號 怎麼將程式碼提到github,大家都知道需要一個github賬號 同樣,開發一個npm包,當然也需要一個npm賬號,將npm包釋出到npm的託管伺服器 該例項包含了模組的區域性呼叫和全域性呼叫兩種方式 二

如何開發一個npm併發布

一、安裝nodejs 不多說了,網上教程多得是 二、建立自己的npm包 目錄結構 npm-test a.js b.js package.json 開發 為了簡單便於理解,就開發一個簡單地hello程式 a.js functi

開發自己的composer

bili .net cnblogs cti 指定 穩定 span ins welcom 1. 創建一個開發目錄 1 mkdir project 2 cd project 2. 利用composer生成一個composer.json 1 composer init

創建自己的私有npm並發布

images 成功 有一個 blog 兩個文件 輸出 strong 目錄 兩個 本文參考網上一些零散資料整理,比較系統的入門npm包的發布,幹貨在此: 1、下載node 地址:http://nodejs.cn/download/ 安裝完畢之後可打開cmd命令行測試是否安裝成

開發npm

node style ice image cti test author class 存在 1、創建項目,使用npm init name:填寫你這個包的名字,默認是你這個文件夾的名字。 註:最好先去npm上找一下有沒有同名的包。也可以在命令行裏面輸入npm i

npm install (讓別人下載自己)

世界 引用 node mon sta color .json 上傳 接下來 好幾天沒更新了,再這裏跟大家說聲抱歉,今天來點幹貨。 發布一個包在npm上,可以供世界所有人使用,想一下,以前我們做項目,都是在npm install 別人的包,什麽時候才能install我們自己

如何開發NPM

新建 specified 進入 version 簡單 script text .com strong 創建包目錄 D:\>mkdir mypackage && cd mypackage D:\mypackage>npm init --ye

在2018年如何優雅的開發一個typescript語言的npm

order pts 文件夾 pub epub save rip ring 回復 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由小明plus發表 很多時候,我們可能想要用 typescript 語言來創建一些模塊,並提交到 npm 供別人使用, 那麽在

npm上發布一個自己

過程 指定 出現 重要 publish reg str 新項目 問題 準備工作 首先,要在https://www.npmjs.com網站註冊一個賬號,具體過程就不說了,很簡單。然後最重要的就是要準備好自己要發布的項目包。 發布 如果是一個新項目,就要先初始化一下 $ np

npm開發問題記錄

建立自己的npm包 首先要有一個npm 的賬號,提前在npm官網上註冊好。 npm包實際上是一個存檔檔案,即一個目錄直接打包為.zip或者tar.gz 格式的檔案,安裝後解壓還原為目錄。 新增賬號 p

Nodejs 釋出自己npm並製作成命令列工具

近日當我在使用npm上已經存在的一個包時,發現它有bug;於是決定自己實現這個功能,自己寫一個npm包。 下面我記錄一下自己的實現過程。 1. npm init 選擇一個資料夾,然後用命令列cd進去,然後執行npm init,這時會生成一長串表單,根據自己的實際情況填寫內容

學習開發自己的 Composer ,並使用 GitHub 實時更新到 Packagist

composer是什麼 Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個專案的基礎上進行管理,在你專案的某個目錄中(例如 vendor)進行安裝。預設情況下它不會在全域性安裝任何東西。因此,這僅僅是一個依賴管理。

使用typescript開發angular模組(釋出npm)

建立模組 初始化package.json檔案 執行命名 npm init -y 會自動生成package.json檔案如下,name預設為資料夾名稱 { "name": "MZC-Ng-Api", "version": "1.0.0

細述怎麼開發自己的外掛依賴,併發布到npm

寫在文章前:一個在專案開發中通常遇到的需求,後臺返回一個時間戳,前臺需要處理成 xxxx年xx月xx日等格式的時間格式。通常我們會封裝成一個函式進行呼叫,但在本文中,就小題大作一下,一個這樣的需求怎麼寫成一個外掛依賴呢?a. this.timeformater('152809

如何使用npm釋出自己npm

記錄一次npm包釋出的過程: 如果想要在npm上有自己的依賴包,那麼首先你要先有一個npm的賬號,沒有的話就需要npm官網 去註冊一個; 然後需要用npm命令去新建一個專案: //1.進入一個資料夾,開啟cmd,輸入命令: npm init 之後就

開發外掛上傳npm 上面

 看了網上講的教程自己沒有安裝成功。。。  最後慢慢搞好了。。下面是我成功上傳到npm上的步驟 one 建立賬號 npm adduser 建立一個賬號    會叫你填入使用者名稱  密碼 郵箱號 然後 登陸   two   npm login 登陸 last    

修改巨人的npm & 如何用npm上傳、更新自己

        其實剛剛從傳統前端+後端轉到現在主流的node,前後端分離,vue三個月不到的我,其實還沒有想過自己會寫包上傳到npm給大家使用……契機來源於,我下載了一個別人寫好的基於vue實現的tree grid包,但是我需要修改一些樣式,但是下載下來的在node_mod

npm開發(whale-makelink)

改變 error: 工具 ima 登錄 targe get type con whale-makelink是一個npm工具,是強業務的工具,可以將當前工程目錄下的工程文件夾,在README中生成工程的鏈接地址。Demo。 一、npm init 使用npm init

開發自己的類庫

對象 ret sha his sda .get ets str 決定 上文說過,復用性主要有:插件,插件為功能的基本單元;組件,組件為應用的單元;設計模式,設計模式為解決為題的思路。 上述三者是算法的具體表現形式。 基於上面的認識,減少重復造輪子的時間,實現高效開發,決定開

如何開發自己的搜索帝國之安裝ik分詞器

style utf-8 編碼 ref 文本 需要 shell pack 用戶 you    Elasticsearch默認提供的分詞器,會把每個漢字分開,而不是我們想要的根據關鍵詞來分詞,我是中國人 不能簡單的分成一個個字,我們更希望 “中國人”,&