编辑器安装意外的填充物.如果没有必要,如何避免安装它们?



我正在使用作曲家,我刚刚更新了guzzlehttp/guzzle.我对安装的软件包感到惊讶:

>composer update  guzzlehttp/guzzle
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 1 update, 0 removals
- Installing symfony/polyfill-php72 (v1.17.0): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.17.0): Downloading (100%)
- Installing symfony/polyfill-intl-idn (v1.17.0): Downloading (100%)
- Updating guzzlehttp/guzzle (6.5.2 => 6.5.4): Downloading (100%)

我正在使用安装了mbstring的 php 7.4,没有理由安装这些 polyfill。作曲家知道我正在使用的PHP版本:

>composer show --platform
(...)
ext-mbstring        7.4.2    The mbstring PHP extension
(...)
php                 7.4.3    The PHP interpreter

我怀疑我在某处有一些配置错误,安装这些 polyfill 对我来说没有意义。

如果包安装在不符合要求的服务器中,则会安装 polyfill。通过这种方式,可以实现最大的便携性和兼容性。

如果您知道您的项目已经依赖于特定的平台版本和/或扩展,因此您可以确定它们始终在每个部署中都可用,那么避免安装这些包的方法是在replace部分声明它们:

"replace": {  
"symfony/polyfill-php72": "*",
"symfony/polyfill-mbstring": "*"
}

这将完全阻止安装这些软件包。但这并不能确保在安装应用程序时存在这些功能。为了完整起见,您应该在 require 部分添加相应的条目:

"require": {  
"php": "^7.2",  
"ext-mbstring": "*"
}

这在symfony/polyfill自述文件中被掩盖了,但它只提到了PHP版本的polyfills,尽管同样的逻辑适用于任何其他polyfill,你的项目肯定有足够的功能,不需要,你可以避免完全安装。

不过,如果您这样做,性能影响很小,不应引起关注。

相关内容

最新更新