「Node.js パッケージガイドライン」の版間の差分
(他言語へのリンクを追加) |
(同期) |
||
| 18行目: | 18行目: | ||
<nowiki>https://registry.npmjs.org/$_pkgname/-/$_pkgname-$pkgver.tgz</nowiki> |
<nowiki>https://registry.npmjs.org/$_pkgname/-/$_pkgname-$pkgver.tgz</nowiki> |
||
| + | |||
| + | {{Tip|また、{{ic|npm view}} を使用して、より複雑なパッケージ仕様に役立つ tarball の場所を取得することもできます。例えば、{{ic|npm view @nestjs/cli@10.1.7 dist.tarball}} のように使用します。}} |
||
== npm を使う == |
== npm を使う == |
||
| 53行目: | 55行目: | ||
=== パッケージには $srcdir/$pkgdir への参照が含まれています === |
=== パッケージには $srcdir/$pkgdir への参照が含まれています === |
||
| − | |||
| − | {{Out of date|The package used as an example was [https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/message/SGRO7PXC7M6SJ42XOGKN2TPDVRKWQIYY/ dropped from AUR].}} |
||
残念ながら、''npm'' はソースディレクトリと pkg ディレクトリへの参照を作成します。これは [https://github.com/npm/cli/issues/3828 既知の問題] です。ただし、これらの参照はまったく使用されないため、手動で削除できます。 |
残念ながら、''npm'' はソースディレクトリと pkg ディレクトリへの参照を作成します。これは [https://github.com/npm/cli/issues/3828 既知の問題] です。ただし、これらの参照はまったく使用されないため、手動で削除できます。 |
||
| 62行目: | 62行目: | ||
find "$pkgdir" -name package.json -print0 | xargs -r -0 sed -i '/_where/d' |
find "$pkgdir" -name package.json -print0 | xargs -r -0 sed -i '/_where/d' |
||
| − | メインパッケージには他の参照も含まれます。これらを削除する最も簡単な方法は、下線付きのプロパティをすべて削除することですが、''sed'' の場合はそれほど簡単ではありません。代わりに、次のように {{Pkg|jq}} を使用すると同様の結果が得られます |
+ | メインパッケージには他の参照も含まれます。これらを削除する最も簡単な方法は、下線付きのプロパティをすべて削除することですが、''sed'' の場合はそれほど簡単ではありません。代わりに、次のように {{Pkg|jq}} を使用すると同様の結果が得られます: |
{{bc|<nowiki> |
{{bc|<nowiki> |
||
| 72行目: | 72行目: | ||
</nowiki>}} |
</nowiki>}} |
||
| − | {{ic|$pkgdir}} への参照が見つかるもう |
+ | {{ic|$pkgdir}} への参照が見つかるもう一つの場所は、パッケージの {{ic|man}} 属性です。もし man ページに関心がない場合(依存関係のためにはインストールされないため)、次のように削除することができます。 |
{{bc|<nowiki> |
{{bc|<nowiki> |
||
| 83行目: | 83行目: | ||
</nowiki>}} |
</nowiki>}} |
||
| − | これら 3 つの手法すべての例は、[https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=readability-cli readability-cli |
+ | これら 3 つの手法すべての例は、[https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=nodejs-readability-cli nodejs-readability-cli's PKGBUILD] で見ることができます。 |
== nvm の使用 == |
== nvm の使用 == |
||
| 89行目: | 89行目: | ||
[[node.js]] ベースのアプリケーションで ’’’ビルド''' または '''パッケージ化''' に異なるバージョンが必要な場合は、{{AUR|nvm}} を活用できます。 |
[[node.js]] ベースのアプリケーションで ’’’ビルド''' または '''パッケージ化''' に異なるバージョンが必要な場合は、{{AUR|nvm}} を活用できます。 |
||
| − | {{Warning|これはアプリケーションの |
+ | {{Warning|これはアプリケーションのビルド/パッケージングに必要な場合にのみ適用され、ランタイム依存関係の代わりにはなりません。}} |
| − | ビルドの依存関係として追加します |
+ | ビルドの依存関係として追加します: |
makedepends=('npm' 'nvm') |
makedepends=('npm' 'nvm') |
||
| 97行目: | 97行目: | ||
{{AUR|nvm}} は {{ic|NVM_DIR}} を使います。[[環境変数]] を使ってプレフィックスを探します。プレフィックスは {{ic|$HOME/.nvm}} に設定されますが、{{AUR|nvm}} の初期化前に指定されていなければ、{{ic|$HOME/.nvm}} になります。 |
{{AUR|nvm}} は {{ic|NVM_DIR}} を使います。[[環境変数]] を使ってプレフィックスを探します。プレフィックスは {{ic|$HOME/.nvm}} に設定されますが、{{AUR|nvm}} の初期化前に指定されていなければ、{{ic|$HOME/.nvm}} になります。 |
||
| − | 次の関数を使用して、カスタムプレフィックスを作成し、ユーザーの場所から分離できます |
+ | 次の関数を使用して、カスタムプレフィックスを作成し、ユーザーの場所から分離できます: |
{{bc|<nowiki> |
{{bc|<nowiki> |
||
2025年2月10日 (月) 02:07時点における最新版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このドキュメントは Node.js パッケージの PKGBUILD を書くときの決まり事とガイドラインを載せています。
目次
パッケージの命名規則
Node.js ライブラリのパッケージ名は、nodejs- プレフィックスで始まる必要があります。スタンドアロンアプリケーションの場合は、プログラム名のみを使用します。
ソース
npm は、ダウンロード URL の安定した命名スキームを提供します。PKGBUILD#ソース source=() 配列では、次の URL テンプレートを使用できます。
https://registry.npmjs.org/$_pkgname/-/$_pkgname-$pkgver.tgz
npm を使う
npm を使用してインストールする場合は、ビルドの依存関係として追加します。
makedepends=('npm')
通常、tarball を抽出する必要は、ありません。
noextract=("${_pkgname}-${pkgver}.tgz")
これは最小限の package 関数です。
package() {
npm install -g --prefix "${pkgdir}/usr" "${srcdir}/${_pkgname}-${pkgver}.tgz"
# npm gives ownership of ALL FILES to build user
# https://bugs.archlinux.org/task/63396
chown -R root:root "${pkgdir}"
}
一時キャッシュの設定
npm は package.json を処理するときにパッケージをビルドするのに必要なパッケージをデフォルトのキャッシュフォルダ $HOME/.npm にダウンロードします。ユーザーのホームフォルダに手を加えないようにするために、--cache フラグでキャッシュフォルダを一時的に設定すると良いでしょう。
依存パッケージを ${srcdir}/npm-cache にダウンロードするには:
npm install --cache "${srcdir}/npm-cache"
それから通常通りにパッケージ化してください:
npm run packager
パッケージには $srcdir/$pkgdir への参照が含まれています
残念ながら、npm はソースディレクトリと pkg ディレクトリへの参照を作成します。これは 既知の問題 です。ただし、これらの参照はまったく使用されないため、手動で削除できます。
すべての依存関係には、_where 属性に $pkgdir への参照が含まれます。通常、次のように sed マジックを使用してこれらの属性を削除できます。
find "$pkgdir" -name package.json -print0 | xargs -r -0 sed -i '/_where/d'
メインパッケージには他の参照も含まれます。これらを削除する最も簡単な方法は、下線付きのプロパティをすべて削除することですが、sed の場合はそれほど簡単ではありません。代わりに、次のように jq を使用すると同様の結果が得られます:
local tmppackage="$(mktemp)"
local pkgjson="$pkgdir/usr/lib/node_modules/$_pkgname/package.json"
jq '.|=with_entries(select(.key|test("_.+")|not))' "$pkgjson" > "$tmppackage"
mv "$tmppackage" "$pkgjson"
chmod 644 "$pkgjson"
$pkgdir への参照が見つかるもう一つの場所は、パッケージの man 属性です。もし man ページに関心がない場合(依存関係のためにはインストールされないため)、次のように削除することができます。
find "$pkgdir" -type f -name package.json | while read pkgjson; do
local tmppackage="$(mktemp)"
jq 'del(.man)' "$pkgjson" > "$tmppackage"
mv "$tmppackage" "$pkgjson"
chmod 644 "$pkgjson"
done
これら 3 つの手法すべての例は、nodejs-readability-cli's PKGBUILD で見ることができます。
nvm の使用
node.js ベースのアプリケーションで ’’’ビルド または パッケージ化 に異なるバージョンが必要な場合は、nvmAUR を活用できます。
ビルドの依存関係として追加します:
makedepends=('npm' 'nvm')
nvmAUR は NVM_DIR を使います。環境変数 を使ってプレフィックスを探します。プレフィックスは $HOME/.nvm に設定されますが、nvmAUR の初期化前に指定されていなければ、$HOME/.nvm になります。
次の関数を使用して、カスタムプレフィックスを作成し、ユーザーの場所から分離できます:
_ensure_local_nvm() {
# let's be sure we are starting clean
which nvm >/dev/null 2>&1 && nvm deactivate && nvm unload
export NVM_DIR="${srcdir}/.nvm"
# The init script returns 3 if version specified
# in ./.nvrc is not (yet) installed in $NVM_DIR
# but nvm itself still gets loaded ok
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
}
この関数は nvmAUR や npm など、指定されたバージョンを使うべき Node.js ベースのプログラムとやりとりする前に呼び出す必要があります。
PKGBUILD の使用例
prepare() {
_ensure_local_nvm
nvm install 14.15.0
}
build() {
_ensure_local_nvm
npm install
}
あるいは、素の nvm install はカレントディレクトリの .nvrc ファイルからバージョン文字列を探します。