Laravel Homesteadでnpm install
Windows環境では共有フォルダ周りでシンボリックリンクと260文字制限が原因によるエラーが発生する模様。
シンボリックリンク対策
デフォルトではシンボリックリンクの作成ができないのでシンボリックリンクの作成を有効にする。
Windowsの設定
cmd.exeを管理者として実行して設定状況を確認。
C:\Windows\system32>fsutil behavior query symlinkevaluation
ローカルからローカルへのシンボリック リンクは有効です。
ローカルからリモートへのシンボリック リンクは有効です。
リモートからローカルへのシンボリック リンクは無効です。
リモートからリモートへのシンボリック リンクは無効です。
有効にする。
fsutil behavior set symlinkevaluation r2r:1 r2l:1
確認。
C:\Windows\system32>fsutil behavior query symlinkevaluation
ローカルからローカルへのシンボリック リンクは有効です。
ローカルからリモートへのシンボリック リンクは有効です。
リモートからローカルへのシンボリック リンクは有効です。
リモートからリモートへのシンボリック リンクは有効です。
VirtualBoxの設定
Homestead/scriptsのhomestead.rbを編集する。
# Configure A Few VirtualBox Settings
config.vm.provider "virtualbox" do |vb|
vb.name = settings["name"] ||= "homestead"
vb.customize ["modifyvm", :id, "--memory", settings["memory"] ||= "2048"]
vb.customize ["modifyvm", :id, "--cpus", settings["cpus"] ||= "1"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
# 追加
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
なお、シェル(Git Bashなど)は管理者権限で実行すること。
260文字制限対策
node_modulesがホストOS(Windows)のMAX_PATH(260文字)を超えてしまうのでゲストOS(Ubuntu)で対策する。
~/Code
以下が共有となのでそれ以外の適当なフォルダにnode_modules
を作りln -s
でシンボリックリンクを作る。
Written with StackEdit.