Node.js NPM模块解决问题
我们有Node.js NPM模块解决问题,node.js,npm,Node.js,Npm,我们有module-A,它依赖于module-B Service-A在其package.json文件中有module-A。这将在服务-A的顶级节点\u模块中安装模块-B模块B然后可以在整个服务A中使用 我们将module-A中module-B的导入从github:module-B更改为npm:module-B@1.0.0 我们需要从这次更改中得到两件事——安装版本化的软件包,并给名称加上别名(这就是为什么它的前缀是npm) 现在-如果您在Service-A中安装npm,它将module-B从包锁
module-A
,它依赖于module-B
Service-A
在其package.json
文件中有module-A
。这将在服务-A
的顶级节点\u模块中安装模块-B
<代码>模块B然后可以在整个服务A
中使用
我们将module-A
中module-B
的导入从github:module-B
更改为npm:module-B@1.0.0
我们需要从这次更改中得到两件事——安装版本化的软件包,并给名称加上别名(这就是为什么它的前缀是npm
)
现在-如果您在Service-A
中安装npm
,它将module-B
从包锁.json的顶层移动到module-B
的依赖项
因此,package lock.json
过去看起来像
{
"name": "Service-A"
"dependencies": {
"module-A": {},
"module-B": {}
}
}
但现在,当我安装npm时,它看起来像:
{
"name": "Service-A"
"dependencies": {
"module-A": {
"dependencies": {
"module-B": {}
}
}
}
}
这意味着module-B
不再处于顶层,不能由service-A
现在真正让我震惊的是:如果我删除node\u modules
和package lock.json
,并运行npm install
,它将在顶层正确安装module-B
。但是如果只删除node\u modules
(就像一个新的git拉取或内置),当它在包锁中移动module-B
时,它会做出这种看似奇怪的行为,如上所述
有人能解释为什么会发生这种情况吗