使用 lerna 安装依赖项失败
Install dependencies using lerna fails
我正在尝试将一个模块作为 dev-dependency 从 npm 添加到我的 lerna 存储库中的几个模块之一,但是在这样做时,该模块既没有添加到我的模块中,也没有添加作为开发依赖。相反,它被添加到我所有的本地模块中,它也被添加为一个普通的依赖项。
我创建了以下内容:
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"
}
如果我现在尝试在 packages/one
中安装新的 devDependency
,即 angular
,我可以 cd packages/one
,然后 yarn add angular --dev
。
但是正如 lerna documentation 中所建议的那样,有一个 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"
}
}
这是一个错误还是我做错了什么?
编辑:
以防万一:
- lerna 版本
2.11.0
- npm 版本
5.8.0
- 纱线版本
1.6.0
- 节点版本
v9.11.1
- 工作环境
Ubuntu 16.04
您忘记提及 lerna init
中缺少的创建 lerna.json
的最后一步 :-)
无论如何,尝试使用 npm>5.2:
npx lerna add angular --scope=one --dev
npx --help: Execute binaries from npm packages.
或者手动执行二进制:
./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"
}
}
@Socrates,让你知道这个谜团的答案很简单。 npm run
忽略所有 --something
参数,除非您在这些参数之前添加一个孤独的 --。
bash
npm run lerna add angular -- --scope=one --dev
你本来可以使用以下命令,因为你正在使用纱线:
bash
yarn lerna add angular --scope=one --dev
我正在尝试将一个模块作为 dev-dependency 从 npm 添加到我的 lerna 存储库中的几个模块之一,但是在这样做时,该模块既没有添加到我的模块中,也没有添加作为开发依赖。相反,它被添加到我所有的本地模块中,它也被添加为一个普通的依赖项。
我创建了以下内容:
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"
}
如果我现在尝试在 packages/one
中安装新的 devDependency
,即 angular
,我可以 cd packages/one
,然后 yarn add angular --dev
。
但是正如 lerna documentation 中所建议的那样,有一个 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"
}
}
这是一个错误还是我做错了什么?
编辑:
以防万一:
- lerna 版本
2.11.0
- npm 版本
5.8.0
- 纱线版本
1.6.0
- 节点版本
v9.11.1
- 工作环境
Ubuntu 16.04
您忘记提及 lerna init
中缺少的创建 lerna.json
的最后一步 :-)
无论如何,尝试使用 npm>5.2:
npx lerna add angular --scope=one --dev
npx --help: Execute binaries from npm packages.
或者手动执行二进制:
./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"
}
}
@Socrates,让你知道这个谜团的答案很简单。 npm run
忽略所有 --something
参数,除非您在这些参数之前添加一个孤独的 --。
bash
npm run lerna add angular -- --scope=one --dev
你本来可以使用以下命令,因为你正在使用纱线:
bash
yarn lerna add angular --scope=one --dev