首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lerna安装依赖项失败

使用lerna安装依赖项失败
EN

Stack Overflow用户
提问于 2018-04-30 12:34:11
回答 2查看 2K关注 0票数 0

我试图在我的lerna回购中的几个模块中添加一个从npm到开发依赖项的模块,但是在这样做的时候,模块既没有添加到我的一个模块中,也没有作为开发依赖项添加。相反,它被添加到我的所有本地模块中,并且作为一个正常的依赖项添加。

我创建了以下内容:

代码语言:javascript
复制
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 ../..

现在我有了以下树结构:

代码语言:javascript
复制
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字段):

代码语言:javascript
复制
{
  "name": "one",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT"
}

如果我现在尝试在packages/one中安装一个新的packages/one,即angular,我可以使用cd packages/one,然后再安装yarn add angular --dev

但是,正如lerna文档中所建议的那样,应该有一个lerna add命令来做到这一点。执行上述操作的命令应该如下所示:

代码语言:javascript
复制
npm run env lerna add angular --scope=one --dev

但是,现在packages/one/package.jsonpackages/two/package.json看起来都很相似(除了name字段),条目是作为dependency而不是devDependency创建的。

代码语言:javascript
复制
{
  "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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-30 12:44:19

您忘了提到lerna init创建lerna.json的最后一步:-)

无论如何,尝试使用npm>5.2:

代码语言:javascript
复制
npx lerna add angular --scope=one --dev

帮助:从npm包执行二进制文件。

或者手动执行二进制文件:

代码语言:javascript
复制
./node_modules/.bin/lerna add angular --scope=one --dev

我确实有这样的结果:

代码语言:javascript
复制
{
  "name": "one",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "devDependencies": {
    "angular": "^1.6.10"
  }
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-08 18:09:10

@苏格拉底,让你知道这个神话的答案是非常简单的。npm run会忽略所有的--something参数,除非在这些参数之前添加一个孤独的参数。

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

您本来可以使用以下命令,因为您正在使用纱线:bash yarn lerna add angular --scope=one --dev

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50100667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档