2015年10月10日土曜日

Laravel Homesteadでnpm install

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.

0 件のコメント:

コメントを投稿