目的
次のような用途のために、Node.js を Windows 環境へインストールせずに動かせる形(ポータブル)にします。
- Node.js アプリを USB 等で持ち運びたい
- 管理者権限なし・セットアップウィザードなしで動かしたい
- “Node.js 実行環境 + アプリ” をフォルダ単位で配布したい
- (将来的に)実行ファイル化を検討する前段として、まず確実に動く梱包形態を作りたい
ここで作るのは「1 つの exe に完全に固める」方式ではなく、Node 本体(node.exe)+アプリ一式を同梱して動かす方式です。
前提
- OS:Windows 11(64-bit)
- ZIP 展開ができる(標準のエクスプローラーで OK)
- フォルダに読み書きできる場所(USB/ローカルどちらでも可)
手順
1) Node.js 配布ページで使いたいバージョンを選ぶ
配布物一覧:https://nodejs.org/dist/
例:v25.2.1 を使う
https://nodejs.org/dist/v25.2.1/
2) Windows 64bit 用の ZIP をダウンロードする
node-v25.2.1-win-x64.zip
3) ZIP を展開する
4) 不要ファイルを削除(任意)
削除は任意ですが、最低限これらは残してください。
-
node.exe(必須:削除すると動きません)
ここから“ポータブル実行”の仕組みを作る
以降は「フォルダ内の node.exe を必ず使う」ためのラッパー(cmd/bat)を用意します。
5) node.cmd(または node.bat)を作成する
node.exe と同じフォルダに node.cmd を作成し、以下を貼り付けます。
@echo off
setlocal
set "ROOT=%~dp0"
"%ROOT%node.exe" %*
endlocal
ポイント
-
%~dp0は「この cmd ファイルのあるフォルダ」を指します -
%*は「渡された引数を全部」渡します
6) run.cmd(または run.bat)を作成する
同じフォルダに run.cmd を作成し、以下を貼り付けます。
@echo off
setlocal
set "ROOT=%~dp0"
rem このフォルダ内の node / npm を優先させる
set "PATH=%ROOT%;%PATH%"
rem 依存を同梱する場合の探索先(必要なら)
set "NODE_PATH=%ROOT%node_modules"
rem npmを使うならキャッシュ等もフォルダ内に閉じる(任意)
set "npm_config_cache=%ROOT%.npm-cache"
set "npm_config_prefix=%ROOT%.npm-global"
set "PATH=%ROOT%.npm-global\bin;%PATH%"
pushd "%ROOT%"
call "%ROOT%node.cmd" "%ROOT%run.js"
popd
endlocal
ポイント
-
setlocalで環境変数の変更をこの cmd 内だけに閉じます -
pushd/popdでカレントディレクトリを安全に移動・復帰します -
npm_config_cache等を設定すると、npm のキャッシュがユーザー環境ではなく同梱フォルダ側に作られます
7) run.js を作成する
同じフォルダに run.js を作成し、以下を貼り付けます。
console.log("run.cmd --> run.js");
console.log("Hello!");
console.log("end");
8) 動作確認
run.cmd をダブルクリック、またはターミナルで実行します。
run.cmd
期待する出力:
仕組みが理解できたら、必要な人のみコードを書き換える
例:
参考(完成品)
ポータブル化のサンプル:





