составитель показывает пакеты dev и пакеты не - PullRequest
1 голос
/ 28 марта 2019

Есть ли способ узнать, какие пакеты будут / не будут автоматически загружаться при использовании флага --no-dev?

Я унаследовал некоторый код, который использует composer, и я не уверен, какие пакетывключены в производственную сборку, и то, что включено только в сборку dev.

Поскольку выполнение composer dump-autoload --no-dev выдает мне ошибки в отношении отсутствующих классов, я подозреваю, что некоторые пакеты помечаются как dev-only, когда они не должны, и яЯ пытаюсь их отследить.

Я не нашел в документах для композиторов ничего, что помогло бы мне сделать это.

Ответы [ 2 ]

2 голосов
/ 30 марта 2019

Самый простой способ проверить, какие пакеты предназначены только для dev, - это запустить composer install (это установит все зависимости, включая dev-only), а затем composer install --no-dev (это удалит зависимости только для dev).Последняя команда выдаст вам список удаленных зависимостей - это пакеты, недоступные в производственных сборках, вам не следует полагаться на них (или перемещать их в раздел require в вашем composer.json).

Пример:

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 56 installs, 0 updates, 0 removals
  - Installing yiisoft/yii2-composer (2.0.7): Loading from cache
  - Installing bower-asset/jquery (3.3.1): Loading from cache
  - Installing bower-asset/bootstrap (v3.4.1): Loading from cache
  - Installing bower-asset/inputmask (3.3.11): Loading from cache
  - Installing bower-asset/punycode (v1.3.2): Loading from cache
  - Installing bower-asset/yii2-pjax (2.0.7.1): Loading from cache
  - Installing cebe/markdown (1.2.1): Loading from cache
  - Installing ezyang/htmlpurifier (v4.10.0): Loading from cache
  - Installing yiisoft/yii2 (2.0.17): Loading from cache
  - Installing swiftmailer/swiftmailer (v5.4.12): Loading from cache
  - Installing yiisoft/yii2-swiftmailer (2.0.7): Loading from cache
  - Installing symfony/polyfill-ctype (v1.11.0): Loading from cache
  - Installing symfony/yaml (v2.8.49): Loading from cache
  - Installing symfony/finder (v2.8.49): Loading from cache
  - Installing symfony/event-dispatcher (v2.8.49): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.11.0): Loading from cache
  - Installing symfony/dom-crawler (v2.8.49): Loading from cache
  - Installing symfony/css-selector (v2.8.49): Loading from cache
  - Installing psr/log (1.1.0): Loading from cache
  - Installing symfony/debug (v2.8.49): Loading from cache
  - Installing symfony/console (v2.8.49): Loading from cache
  - Installing symfony/browser-kit (v2.8.49): Loading from cache
  - Installing ralouphie/getallheaders (2.0.5): Loading from cache
  - Installing psr/http-message (1.0.1): Loading from cache
  - Installing guzzlehttp/psr7 (1.5.2): Loading from cache
  - Installing sebastian/recursion-context (1.0.5): Loading from cache
  - Installing sebastian/exporter (1.2.2): Loading from cache
  - Installing phpunit/php-text-template (1.2.1): Loading from cache
  - Installing doctrine/instantiator (1.0.5): Loading from cache
  - Installing phpunit/phpunit-mock-objects (2.3.8): Loading from cache
  - Installing codeception/stub (1.0.4): Loading from cache
  - Installing sebastian/diff (1.4.3): Loading from cache
  - Installing sebastian/comparator (1.2.4): Loading from cache
  - Installing sebastian/version (1.0.6): Loading from cache
  - Installing sebastian/global-state (1.1.1): Loading from cache
  - Installing sebastian/environment (1.3.8): Loading from cache
  - Installing phpunit/php-timer (1.0.9): Loading from cache
  - Installing phpunit/php-file-iterator (1.4.5): Loading from cache
  - Installing phpunit/php-token-stream (1.4.12): Loading from cache
  - Installing phpunit/php-code-coverage (2.2.4): Loading from cache
  - Installing phpdocumentor/reflection-docblock (2.0.5): Loading from cache
  - Installing phpspec/prophecy (1.8.0): Loading from cache
  - Installing phpunit/phpunit (4.8.36): Loading from cache
  - Installing codeception/phpunit-wrapper (6.0.10): Loading from cache
  - Installing behat/gherkin (v4.6.0): Loading from cache
  - Installing codeception/base (2.4.1): Loading from cache
  - Installing myclabs/deep-copy (1.6.1): Loading from cache
  - Installing codeception/specify (0.4.6): Loading from cache
  - Installing codeception/verify (0.3.3): Loading from cache
  - Installing yiisoft/yii2-bootstrap (2.0.9): Loading from cache
  - Installing yiisoft/yii2-debug (2.0.14): Loading from cache
  - Installing fzaninotto/faker (v1.8.0): Loading from cache
  - Installing yiisoft/yii2-faker (2.0.4): Loading from cache
  - Installing phpspec/php-diff (v1.1.0): Loading from cache
  - Installing bower-asset/typeahead.js (v0.11.1): Loading from cache
  - Installing yiisoft/yii2-gii (2.0.8): Loading from cache
Generating autoload files

А затем список зависимостей только для разработчиков:

$ composer install --no-dev
Loading composer repositories with package information
Installing dependencies from lock file
Package operations: 0 installs, 0 updates, 44 removals
  - Removing yiisoft/yii2-gii (2.0.8)
  - Removing yiisoft/yii2-faker (2.0.4)
  - Removing yiisoft/yii2-debug (2.0.14)
  - Removing symfony/yaml (v2.8.49)
  - Removing symfony/polyfill-mbstring (v1.11.0)
  - Removing symfony/polyfill-ctype (v1.11.0)
  - Removing symfony/finder (v2.8.49)
  - Removing symfony/event-dispatcher (v2.8.49)
  - Removing symfony/dom-crawler (v2.8.49)
  - Removing symfony/debug (v2.8.49)
  - Removing symfony/css-selector (v2.8.49)
  - Removing symfony/console (v2.8.49)
  - Removing symfony/browser-kit (v2.8.49)
  - Removing sebastian/version (1.0.6)
  - Removing sebastian/recursion-context (1.0.5)
  - Removing sebastian/global-state (1.1.1)
  - Removing sebastian/exporter (1.2.2)
  - Removing sebastian/environment (1.3.8)
  - Removing sebastian/diff (1.4.3)
  - Removing sebastian/comparator (1.2.4)
  - Removing ralouphie/getallheaders (2.0.5)
  - Removing psr/log (1.1.0)
  - Removing psr/http-message (1.0.1)
  - Removing phpunit/phpunit-mock-objects (2.3.8)
  - Removing phpunit/phpunit (4.8.36)
  - Removing phpunit/php-token-stream (1.4.12)
  - Removing phpunit/php-timer (1.0.9)
  - Removing phpunit/php-text-template (1.2.1)
  - Removing phpunit/php-file-iterator (1.4.5)
  - Removing phpunit/php-code-coverage (2.2.4)
  - Removing phpspec/prophecy (1.8.0)
  - Removing phpspec/php-diff (v1.1.0)
  - Removing phpdocumentor/reflection-docblock (2.0.5)
  - Removing myclabs/deep-copy (1.6.1)
  - Removing guzzlehttp/psr7 (1.5.2)
  - Removing fzaninotto/faker (v1.8.0)
  - Removing doctrine/instantiator (1.0.5)
  - Removing codeception/verify (0.3.3)
  - Removing codeception/stub (1.0.4)
  - Removing codeception/specify (0.4.6)
  - Removing codeception/phpunit-wrapper (6.0.10)
  - Removing codeception/base (2.4.1)
  - Removing bower-asset/typeahead.js (v0.11.1)
  - Removing behat/gherkin (v4.6.0)
Generating autoload files

Существует также maglnet/composer-require-checker, который может быть полезен для обнаружения использованиябиблиотеки, не перечисленные в разделе require.

1 голос
/ 30 марта 2019

По сути, любой пакет (и его зависимости) в разделе require-dev вашего файла composer.json не будет автоматически загружаться при использовании composer dump-autoload --no-dev. К сожалению, я не думаю, что есть команда, чтобы показать эти пакеты вместе с их зависимостями в виде одного списка.

Что вы можете сделать, это попробовать переместить каждый из пакетов из раздела require-dev в require, повторно запустив composer update и composer dump-autoload --no-dev, чтобы увидеть, когда ваша ошибка исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...