查看PHP Composer install
命令的帮助,我看到以下两个选项
$ composer help install
Options:
--prefer-source Forces installation from package sources when possible, including VCS information.
--prefer-dist Forces installation from package dist even for dev versions.
Run Code Online (Sandbox Code Playgroud)
什么是"dist"装置?我在作曲家网站和谷歌周围戳了一下,但似乎没有任何解决这个问题(所以我认为这对于熟悉Composer的人来说是核心和显而易见的 - 为新手问题道歉)
我假设--prefer-source
Composer会向Packagist询问存储库位置,然后checkout/clone/export/etc. 项目本身.
如果是这样,那么--prefer-dist
从哪里下载?它下载了什么?
Ros*_* II 37
根据http://getcomposer.org/doc/03-cli.md,该--prefer-source
选项将更喜欢创建一个"版本控制存储库"的包目录.这相当于你键入:
$ git clone ...
Run Code Online (Sandbox Code Playgroud)
要么
$ svn checkout ...
Run Code Online (Sandbox Code Playgroud)
该--prefer-dist
选项将更喜欢创建非"版本控制存储库",这相当于您键入:
$ git clone ... ; rm -fr dir/.git
Run Code Online (Sandbox Code Playgroud)
要么
$ svn export ...
Run Code Online (Sandbox Code Playgroud)
此外,您可以为您source
和dist
您的定义单独的回购composer.json
.这是一个例子:
{
"repositories": [
{
"type": "package",
"package": {
"name": "joshuaclayton/blueprint-css",
"version": "master",
"source": {
"url": "git://github.com/joshuaclayton/blueprint-css.git",
"type": "git",
"reference": "master",
}
}
},
{
"type": "package",
"package": {
"name": "fiftyone/mobi-lite-php",
"version": "2013.03.06",
"dist": {
"url": "http://iweb.dl.sourceforge.net/project/fiftyone/51Degrees.mobi-Lite-2013.03.06.php.zip",
"type": "zip"
},
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
注意:无论出于何种原因,当我使用时--prefer-dist
,我有时会收到诸如此类的错误
Fatal error: Cannot redeclare class Zend_Db_Adapter_Pdo_Abstract in ...
Run Code Online (Sandbox Code Playgroud)
我使用时不会出现--prefer-source
.出于这个原因,我只使用--prefer-source
,直到我弄清楚这个问题的原因.
wuj*_*ujt 10
正如Composer 文档中明确指出的:
事实上,Composer 在内部将每个版本视为一个单独的包。虽然当您使用 Composer 时这种区别并不重要,但当您想要更改它时就非常重要了。
和,
Dist:dist 是打包数据的打包版本。通常是发布版本,通常是稳定版本。
来源:来源用于开发。这通常来自源代码存储库,例如 git。当你想修改下载的包时可以获取它。
所以,
软件包可以提供其中任何一个,甚至两者都提供。根据某些因素,例如用户提供的选项和软件包的稳定性,将优先选择其中之一。
如果您正在签出一个分支,则假定您想要在该分支上工作,并且 Composer 实际上会将存储库克隆到供应商目录中的正确位置。
对于标签,它只是复制正确的文件,而不实际克隆存储库。
Pmp*_*mpr 10
我不钦佩,甚至不赞成所提供的答案,因为它没有解决这个问题.所以尽管它有点太老了,但我发布这个答案是为了进一步提及这个问题.
通常作曲家会处理标签(比如1.2.7
),但事实并非如此.您可能还需要分支(如dev-master
)作为依赖项.
如果您希望composer需要标记,它只会复制本地文件(vendor
目录中的某个位置).
如果你想让作曲家签出一个分支而不是一个标签,那么就有机会(作曲家的理性假设),你想要开发它(从而进行更改),因此作曲家克隆你本地的存储库(再次,在vendor
目录中的某个地方).
如果您想要一个标签,但仍然可以在您的本地开发它,该怎么办?
使用--prefer-source
连同你的composer install
,composer update
或composer require
命令:
composer install symfony/symfony:3.4.* --prefer-source
Run Code Online (Sandbox Code Playgroud)
如果您想要一个最新的开发分支怎么办,但是您只是想获得新的东西并且不想参与其开发?
使用--prefer-dist
连同你的composer install
,composer update
或composer require
命令:
composer install symfony/symfony:dev-master --prefer-dist
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12312 次 |
最近记录: |