使用lerna安装依赖项失败

时间:2018-04-30 12:34:12

标签: lerna

我正在尝试将模块作为dev-dependency从npm添加到我的lerna repo中的几个模块之一,但是当这样做时,模块既不会添加到我的一个模块中,也不会添加为模块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.jsonpackages/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 documentation中所建议的那样,lerna add命令应该完全正确。完全如上所述的命令应该如下:

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

但是,现在packages/one/package.jsonpackages/two/package.json看起来都是相似的(名称字段除外),条目是dependency而不是devDependency:< / p>

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

这是一个错误还是我做错了什么?

修改

以防万一:

  • lerna version 2.11.0
  • npm version 5.8.0
  • 纱线版本​​1.6.0
  • 节点版本v9.11.1
  • 工作环境Ubuntu 16.04

2 个答案:

答案 0 :(得分:1)

您忘记提及lerna init创建lerna.json时遗失的最后一步: - )

无论如何,请尝试使用npm&gt; 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"
  }
}

答案 1 :(得分:0)

@Socrates,这样您就知道解决这一难题的方法非常简单。 npm run会忽略所有--something个参数,除非您在这些参数之前添加一个孤独的字符。

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

由于您一直在使用纱线,因此可以使用以下命令: bash yarn lerna add angular --scope=one --dev