mcpField
S
sandbox-npm-install

sandbox-npm-install

github.com/github開発40.5k1.7k 回インストール1 日前に更新
リポジトリ

sandbox-npm-install について

virtiofsでマウントされたワークスペースを使うDockerサンドボックス向けのnpm依存関係インストールスキルです。ローカルのext4上でインストールし、node_modulesをワークスペースへリンクしてネイティブバイナリの障害を避けます。

主な機能

  1. 01ローカルext4上で依存関係をインストール
  2. 02node_modulesをワークスペースへリンク
  3. 03指定されたネイティブバイナリを検証
  4. 04Playwright Chromiumの任意インストール

活用シーン

  1. 01新しいサンドボックスの依存関係を準備
  2. 02packageロックファイル変更後の再インストール
  3. 03ネイティブバイナリのクラッシュに対処

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill sandbox-npm-install

インストール後、Claude Code で/sandbox-npm-installを入力して読み込まれたか確認します。

同梱ファイルscripts/install.sh

詳細

Sandbox npm インストール

このスキルを使用するタイミング

次の場合はいつでも、このスキルを使用してください。

  • 新しいサンドボックスセッションで、初めて npm パッケージをインストールする必要がある
  • package.json または package-lock.json が変更され、再インストールが必要である
  • SIGILL、SIGSEGV、mmap、unaligned sysNoHugePageOS などのエラーを伴うネイティブバイナリのクラッシュが発生した
  • node_modules ディレクトリがない、または破損している

前提条件

  • virtiofs でワークスペースをマウントした Docker サンドボックス環境
  • コンテナで Node.js と npm を利用できること
  • 対象のワークスペースに package.json ファイルがあること

背景

Docker のサンドボックスワークスペースは、通常 virtiofs(ホストと Linux VM 間でファイルを同期)を介してマウントされます。ネイティブの Go および Rust バイナリ(esbuild、lightningcss、rollup など)は、aarch64 で virtiofs 上から実行すると、mmap のアラインメントエラーによりクラッシュします。これを修正するには、コンテナのローカル ext4 ファイルシステムにインストールし、ワークスペースにシンボリックリンクを作成します。

インストール手順

ワークスペースのルートから、同梱のインストールスクリプトを実行します。

bash scripts/install.sh
一般的なオプション
オプション説明
--workspace <path>package.json を含むディレクトリのパス(省略した場合は自動検出)
--playwrightE2E テスト用の Playwright Chromium ブラウザーもインストールします
スクリプトの処理内容
  1. package.json、package-lock.json、および存在する場合は .npmrc を、ローカル ext4 ディレクトリにコピーします
  2. ローカルファイルシステム上で npm ci(ロックファイルがない場合は npm install)を実行します
  3. node_modules をワークスペースに戻すシンボリックリンクを作成します
  4. 既知のネイティブバイナリ(esbuild、rollup、lightningcss、vite)が存在する場合は検証します
  5. 必要に応じて、Playwright ブラウザーとシステム依存関係をインストールします(利用可能な場合は sudo を使用します)

検証に失敗した場合は、スクリプトをもう一度実行してください。初回セットアップ中のクラッシュは断続的に発生することがあります。

インストール後の検証

スクリプトの完了後、ツールチェーンが動作することを確認します。例:

npm test             # Run project tests
npm run build        # Build the project
npm run dev          # Start dev server

重要な注意事項

  • ローカルのインストールディレクトリ(例:/home/agent/project-deps)はコンテナ内のみにあり、ホストには同期されません
  • node_modules のシンボリックリンクはホスト上ではリンク切れとして表示されますが、通常 node_modules は Git の対象外であるため問題ありません
  • ホスト上で npm ci または npm install を実行すると、シンボリックリンクは実ディレクトリに置き換わります
  • package.json または package-lock.json を変更した後は、必ずインストールスクリプトを再実行してください
  • マウントされたワークスペースで npm ci または npm install を直接実行しないでください。ネイティブバイナリがクラッシュします

トラブルシューティング

問題解決策
開発サーバーの実行時に SIGILL または SIGSEGV が発生するインストールスクリプトを再実行してください。ワークスペースで npm install を直接実行していないことを確認してください
インストール後に node_modules が見つからないシンボリックリンクが存在するか確認します:ls -la node_modules
インストール中に権限エラーが発生するローカルの依存関係ディレクトリに、現在のユーザーが書き込みできることを確認してください
検証が断続的に失敗するスクリプトをもう一度実行してください。初回読み込み時のネイティブバイナリのクラッシュは、非決定的に発生することがあります

Vite との互換性

プロジェクトで Vite を使用している場合、server.fs.allow でシンボリックリンク先のパスを許可する必要があることがあります。Vite がシンボリックリンクを介してファイルを配信できるように、シンボリックリンク先の親ディレクトリ(例:/home/agent/project-deps/)を Vite の設定に追加してください。

コメント