【Node.js】自分だけのパッケージを開発しよう!

自分だけのパックを開発しよう!
初期化パッケージの基本構造
  • 新しいフォルダー。パッケージのルートディレクトリとして
  • フォルダー内に、
    package.json (パッケージ管理構成ファイル)
    - index.js (パッケージ エントリ ファイル)
    - README.md (パッケージ ドキュメント) の3 つの新しいファイルを作成します。
  • package.json の初期化
{
    
    
    "name": "lusheng-pack",//包名,包名不能和网址里的包名重复
    "version": "1.0.0",//版本号
    "main": "index.js", //包的入口文件,导入根据main,找到index.js
    "description": "功能说明",//搜索包的时候的简短描述信息
	 "keywords": ["lusheng"],//搜索关键字,必须双引号,单引号报错
    "license": "ISC"//所遵循的开源许可协议,默认ISC
}
  • index.js
//包的入口文件,记录不同方法

//定义格式化时间的方法,传入日期时间
function getTime(time) {
    
    
    const dt = new Date(time)
    const y = dt.getFullYear()
    const m = padzero(dt.getMonth() + 1)
    const d = padzero(dt.getDate())
    const hh = padzero(dt.getHours())
    const mm = padzero(dt.getMinutes())
    const ss = padzero(dt.getSeconds())
    return `${
      
      y}-${
      
      m}-${
      
      d}-${
      
      hh}-${
      
      mm}-${
      
      ss}`
}
//定义补零函数
function padzero(n) {
    
    
    return n > 9 ? n : '0' + n
}
//定义转义HTML的方法,接收html
function gethtmlStr(Str) {
    
    
    return Str.replace(/<|>|"|&/g, (match) => {
    
    
        switch (match) {
    
    
            case '<':
                return '&lt;'
            case '>':
                return '&gt;'
            case '"':
                return '&quot;'
            case '&':
                return '&amp;'
        }
    })
}
//定义还原HTML的方法,接收转义语句
function sethtmlStr(Str) {
    
    
    return Str.replace(/&lt;|&gt;|&quot;|&amp;/g, (match) => {
    
    
        switch (match) {
    
    
            case '&lt;':
                return '<'
            case '&gt;':
                return '>'
            case '&quot;':
                return '"'
            case '&amp;':
                return '&'
        }
    })
}
//向外暴露的成员
module.exports = {
    
    
    getTime,
    gethtmlStr,
    sethtmlStr
}
ページの使用
const pack = require("./index.js")
const str = `< h1 title='html语句'><span>转义啊?"&amp</span></h1>`
console.log(pack.gethtmlStr(str))
console.log(pack.sethtmlStr(pack.gethtmlStr(str)))

ここに画像の説明を挿入

モジュールは必要に応じて分割することもできます

ここに画像の説明を挿入

  • index.js
//包的入口文件,记录不同方法
const DateTime = require("./until/getTime.js")
const htmlStr = require("./until/getStr.js")

//向外暴露的成员,
module.exports = {
    
    
  ...DateTime,
  ...htmlStr
}
パッケージを書くためのドキュメント
  • パッケージを使用するためのユーザーフレンドリーなドキュメント
  • 通常は6つのアイテムが含まれています
  • 1. 設置方法
  • 2.輸入方法
  • 3.フォーマット時間
  • 4. 特記事項
  • 5.オープンソースプロトコル
リリースパッケージ
  • npm アカウントの登録、ウェブサイトアドレス: https://www.npmjs.com/
  • アカウント情報、氏名、公開メールアドレス、ユーザー名、パスワードを入力
  • 「アカウントを作成」をクリックして登録します
  • メールにログインし、確認リンクをクリックしてアカウントを確認します
  • 登録後、端末にログイン
  • 各ログイン前のnpmアドレスは公式サーバーアドレスに切り替える必要があり、ミラーアドレスは使用できません。
  • npm install -g nrm
  • nrm は npm を使用します
  • npm login コマンドを実行し、ユーザー名、パスワード、メールアドレスを順に入力すると、ログインに成功します。
  • 次の状況では、メールボックスに移動して確認コードを取得し、入力する必要があります
    ここに画像の説明を挿入
  • これが起動すればログイン成功です
    ここに画像の説明を挿入
npm でパッケージを公開する
  • ターミナルをルート ディレクトリに切り替え、npm publish コマンドを実行してパッケージを npm に公開します (注: パッケージ名は同じにすることはできません)。
  • cd ルート ディレクトリ名
  • npm パブリッシュ
公開されたパッケージを削除
  • npm unpublish package name --force, 削除可能, 72時間以内のみ削除,
  • この方法でパッケージを削除すると、24 時間以内に再公開することはできません
モジュールローディング機構
  • 最初にキャッシュから読み込む
  • モジュールは最初のロード後にキャッシュされます。つまり、require() によってモジュールのコードが複数回実行されることはありません。
  • 組み込みモジュール、ユーザー定義モジュール、サードパーティ モジュールのいずれであっても、最初にキャッシュから読み込まれるため、モジュールの読み込み効率が向上します。
組み込みモジュールのローディング機構
  • 組み込みモジュールの読み込み優先度が最も高い
  • たとえば、組み込みの fs モジュールをインポートする場合、カスタム モジュールにも fs がありますが、インポートの優先順位は組み込みモジュールの fs です。
カスタム モジュールのロード メカニズム
  • カスタム モジュールをロードするときは、./ または .../ で始まるパス識別子を指定する必要があります。指定しない場合、ノードはカスタム モジュールを組み込みモジュールまたはサードパーティ モジュールとして扱います。
  • カスタムモジュールをインポートする際、ファイルの拡張子を省略した場合、node.jsは以下のファイルを順番に読み込もうとします
  • 1.正確なファイル名に従ってロードする
  • 2. .js 拡張子の読み込みを完了する
  • 3. .json 拡張子の読み込みを完了する
  • 4. ロード用の .node 拡張子を完成させます
  • 読み込みに失敗しました、エラー
サードパーティ モジュールの読み込みメカニズム
  • 組み込みモジュールでもカスタム モジュールでもない場合、node.js は現在のモジュールの親ディレクトリから開始し、/node_modules フォルダーを見つけてサードパーティ モジュールをロードしようとします。
ディレクトリがモジュールの場合の読み込みメカニズム
  • 1. ロードされたディレクトリで package.json というファイルを見つけ、require() ロードのエントリとして main 属性を探します。
  • 2. package.json ファイルがない場合、またはメイン エントリが存在しない場合、node.js はディレクトリに index.js ファイルをロードします。
  • 3. すべてが失敗した場合、エラー メッセージが出力され、不足しているモジュールが報告されます。

おすすめ

転載: blog.csdn.net/weixin_44899940/article/details/129055178