2016-01-07 41 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包的更新将删除其中安装的包。 –