自分だけのパックを開発しよう!
初期化パッケージの基本構造
- 新しいフォルダー。パッケージのルートディレクトリとして
- フォルダー内に、
package.json (パッケージ管理構成ファイル)
- index.js (パッケージ エントリ ファイル)
- README.md (パッケージ ドキュメント) の3 つの新しいファイルを作成します。
- package.json の初期化
{
"name": "lusheng-pack",
"version": "1.0.0",
"main": "index.js",
"description": "功能说明",
"keywords": ["lusheng"],
"license": "ISC"
}
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
}
function gethtmlStr(Str) {
return Str.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
function sethtmlStr(Str) {
return Str.replace(/<|>|"|&/g, (match) => {
switch (match) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
getTime,
gethtmlStr,
sethtmlStr
}
ページの使用
const pack = require("./index.js")
const str = `< h1 title='html语句'><span>转义啊?"&</span></h1>`
console.log(pack.gethtmlStr(str))
console.log(pack.sethtmlStr(pack.gethtmlStr(str)))
モジュールは必要に応じて分割することもできます
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. すべてが失敗した場合、エラー メッセージが出力され、不足しているモジュールが報告されます。