Установить зависимости с помощью lerna не удается - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь добавить модуль в виде dev-зависимости от npm к одному из нескольких модулей, которые есть в моем репозитории lerna, но при этом ни один модуль не добавляется только в один из моих модулей и не добавляется как DEV-зависимость. Вместо этого он добавляется ко всем моим локальным модулям и также добавляется как обычная зависимость.

Я создал следующее:

mkdir FirstProject
cd FirstProject
yarn init
yarn add lerna --dev
npm run env lerna init
mkdir packages/one
mkdir packages/two
cd packages/one
yarn init
cd ../..
cd packages/two
yarn init
cd ../..

Теперь у меня есть следующая древовидная структура:

myuser@mylaptop:~/FirstProject$ tree -I node_modules
.
├── lerna.json
├── package.json
├── packages
│   ├── one
│   │   └── package.json
│   └── two
│       └── package.json
└── yarn.lock

Оба, packages/one/package.json и packages/two/package.json выглядят одинаково (кроме поля имени):

{
  "name": "one",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT"
}

Если я сейчас попытаюсь установить новый devDependency в packages/one, т.е. angular, я мог бы cd packages/one, а затем yarn add angular --dev.

Но, как предлагается в документации lerna , есть команда lerna add, которая должна делать именно это. Предполагается, что указанная выше команда будет следующей:

npm run env lerna add angular --scope=one --dev

Но теперь и packages/one/package.json, и packages/two/package.json выглядят снова одинаково (за исключением поля имени), и запись была сделана как dependency, а не как devDependency:

{
  "name": "one",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "angular": "^1.6.10"
  }
}

Это ошибка или я что-то не так делаю?

EDIT:

На всякий случай, если это имеет значение:

  • Лерна версия 2.11.0
  • npm версия 5.8.0
  • версия пряжи 1.6.0
  • версия узла v9.11.1
  • Рабочая среда Ubuntu 16.04

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

@ Сократ, просто чтобы вы знали, что ответ на эту загадку очень прост. npm run игнорирует все --something параметры, если вы не добавите одинокий - перед этими аргументами.

bash npm run lerna add angular -- --scope=one --dev

вы могли бы использовать следующую команду, так как в любом случае вы используете пряжу: bash yarn lerna add angular --scope=one --dev

0 голосов
/ 30 апреля 2018

Вы забыли упомянуть пропущенный последний шаг lerna init для создания lerna.json: -)

В любом случае, попробуйте с npm> 5.2:

npx lerna add angular --scope=one --dev

npx --help: запускать двоичные файлы из пакетов npm.

или ручное выполнение двоичного файла:

./node_modules/.bin/lerna add angular --scope=one --dev

И у меня есть результат:

{
  "name": "one",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "devDependencies": {
    "angular": "^1.6.10"
  }
}
...