2016-01-07 42 views
4

$ composer install之後,一切進展順利,但composer.json丟失(刪除?)。作曲家安裝後,爲什麼我的composer.json會自動刪除或丟失?

這是,composer.json將不再存在後composer install

這很奇怪。


這是我composer.json

{ 
    "repositories": [ 
    { 
     "type": "composer", 
     "url": "http://wpackagist.org" 
    }, 
    { 
     "type": "package", 
     "package": { 
     "name": "wordpress", 
     "type": "webroot", 
     "version": "4.4.1", 
     "dist": { 
      "type": "zip", 
      "url": "https://github.com/WordPress/WordPress/archive/4.4.1.zip" 
     }, 
     "require": { 
      "fancyguy/webroot-installer": "1.0.0" 
     } 
     } 
    } 
    ], 
    "require": { 
    "php": ">=5.3.0", 
    "wordpress": "4.4.1", 
    "fancyguy/webroot-installer": "1.0.0" 
    }, 
    "extra": { 
    "webroot-dir": "./", 
    "webroot-package": "wordpress" 
    } 
} 

vendor目錄和composer.lock仍然存在。

myMBP:testtt erwai$ composer install 
Loading composer repositories with package information 
Installing dependencies (including require-dev) 
    - Installing fancyguy/webroot-installer (1.0.0) 
    Loading from cache 

    - Installing wordpress (4.4.1) 
    Loading from cache 

Writing lock file 
Generating autoload files 

myMBP:testtt erwai$ ls 
composer.lock  wp-blog-header.php wp-load.php 
index.php  wp-comments-post.php wp-login.php 
license.txt  wp-config-sample.php wp-mail.php 
readme.html  wp-content  wp-settings.php 
vendor   wp-cron.php  wp-signup.php 
wp-activate.php  wp-includes  wp-trackback.php 
wp-admin  wp-links-opml.php xmlrpc.php 

myMBP:testtt erwai$ ls composer.json 
ls: composer.json: No such file or directory 

myMBP:testtt erwai$ ls composer.lock 
composer.lock 

myMBP:testtt erwai$ ls vendor 
autoload.php composer 

  • OS:OS X 10.11.2
  • PHP:30年5月5日
  • 作曲:1.0-DEV(64b0d721838cdceef679761c5cf69a0d070d14c9)

EDIT

我認爲這可能會在wordpress安裝時發生。

由於wordpress安裝在根目錄("webroot-dir": "./")中,它似乎清理了所有的目錄。

有什麼想法嗎?

+0

您應該在https:// github上報告該問題。com/fancyguy/webroot-installer /問題,因爲它明顯是該插件中的一個錯誤,它在安裝時將目錄清理乾淨。 – Seldaek

+0

插件僅返回自定義文件夾('$ extra ['webroot-dir']')。它的作曲家,提取到這個文件夾(覆蓋內容)。當根目標鎖定時,插件可以/應該更具防禦性並警告用戶。 –

+0

'FileDownloader'和'VcsDownloader'在下載前清空目錄。我不確定如何優雅地處理非空目錄,因爲如果已經安裝了以前的版本,它應該是非空的。 –

回答

1

由於wordpress安裝在根目錄(「webroot-dir」:「./」)中,它似乎清理了所有的目錄。

Composer將ZIP壓縮文件解壓縮到覆蓋其內容的文件夾中。 Composer完成時,它會添加composer.lock文件和Composer自動加載文件(vendor/autoload.phpvendor/composer/*.php)。


這個插件的目的是WordPress的安裝到自定義文件夾(而不是到項目文件夾):

/home/user/composer-wp-installer-projectwebroot-dir/var/www/abc.com/wordpress

所以,這個想法是根本就沒有安裝到您的項目的根文件夾中。

請這給一試:

"extra": { 
    "webroot-dir": "wordpress", 
    "webroot-package": "wordpress" 
} 

這將創建一個新的文件夾wordpress爲WP和保持「安裝程序」的東西,它composer.json在項目文件夾。

+1

另一件要注意的作曲家使用的正常安裝方法,webroot目錄下不應該有安裝目標。例如'composer-installers'配置爲在同一個目錄中安裝'wordpress-plugin',因爲對webroot包的更新將刪除其中安裝的包。 –