yarn import

Генерирует `yarn.lock` из сформированной npm папки `node_modules`.

yarn import

Эта команда помогает переносить проекты, которые опираются на npm-shrinkwarp.json, минимизируя различия между файлом блокировки и существующим деревом зависимостей насколько это возможно.

Мотивация

Во многих проектах используется npm shrinkwrap или добавляются свои node_modules в систему контроля версий из-за хрупкого дерева зависимостей. Такие проекты не так легко перевести на Yarn, потому что yarn install может построить совсем другую последовательность зависимостей в дереве. Так же не все ветки могут быть отражены в yarn.lock и некоторые корректные деревья будут автоматически дедуплицированы во время установки. Эти и другие нюансы создают определённые трудности для миграции в ручном режиме.

yarn import стремится облегчить эту задачу, создавая yarn.lock файл из версий найденных внутри node_modules, согласно нормальным правилам разрешения require.resolve(). В тех случаях, когда механизм разрешения Yarn не может идентично выстроить существующее дерево зависимостей, будут выведены оповещения для ревизии изменений вручную. Существующее дерево node_modules будет заранее проверено на корректность и результирующий файл блокировки будет корректным для следующей yarn install без каких-либо сюрпризов (нарушенная совместимость, не найденные зависимости, автоматическая дедупликация, и т. п.)

$ yarn import
yarn import vx.x.x
success Folder in sync.
warning Using version "2.2.4" of "lru-cache" instead of "2.7.3" for "ngstorage > grunt > minimatch"
warning Using version "2.0.6" of "readable-stream" instead of "2.2.9" for "ngstorage > karma > chokidar > readdirp"
[...]
success Saved lockfile.
Done in 11.96s.