这是一个很难的问题,我将尽力解释。
如何添加没有安装依赖项或新软件包的新软件包(在package / -lock.json中定义)?
例如:当前,我们有package.json和package-lock.json来维护版本控制。
但是,如果我们尝试添加新软件包,则会更新/添加其他软件包(与package.json或package-lock.json相关)。
目的只是添加新软件包,将这些软件包信息添加到package.json和package-lock.json中,而不会影响当前安装的软件包。
最近,npm发布了npm audit命令。当您npm i
通知任何漏洞时,它将自动运行。我有一个简单的依赖树,如下所示:
package A
package B
package B dependency
package C
Run Code Online (Sandbox Code Playgroud)
我package.json
的dependencies
字段中包括A,B和C。B需要它自己的依赖关系,npm警告说它具有漏洞。我的问题是,如何覆盖该package B dependency
版本以使用最新版本?我已经读过,这要么是工作,shrinkwrap.json
要么是手动编辑,package-lock.json
但是我找不到任何具体的示例来说明如何做。
我确实看到Yarn支持中的resolutions
字段package.json
,但是我没有使用Yarn。有没有办法通过npm开箱即用来完成此任务?
当我在项目中运行"npm install"时,它经常修改package-lock.json,例如,如果我从另一台计算机(具有不同节点或npm版本)处理同一项目.
但与此同时,文档建议该文件应该添加到版本控制(在我的情况下为git):
https://docs.npmjs.com/files/package-lock.json
此文件旨在提交到源存储库,并用于各种目的:...
那么我应该在切换工作机器时或者在其他人的情况下来回提交npm所做的更改npm install
吗?这将是一场噩梦.
目前我只是放弃了由npm对package-lock.json所做的任何更改,并且它一直正常工作.所以我不妨把它添加到.gitignore ......
我做错了吗?我应该用npm ci
吗?我不会把我的电脑称为"CI",它只是一台开发机器,我为什么要在那里使用它?
基本上我和这位先生有同样的问题:
https://github.com/npm/npm/issues/18103#issuecomment-370401935
(遗憾的是,我无法在该问题上添加评论或根本无法创建新问题,npm repo已禁用问题)
出于安全原因,我需要一个特定的注册表,但在package-lock.json
我仍然保留https://registry.npmjs.org/
有什么办法可以强制吗?
我们有一个现有的Lerna mono-repo,其结构如下:
/
/packages
/package1
/package2
/package3
...
Run Code Online (Sandbox Code Playgroud)
我们目前在我们的项目中使用 Yarn,实际上只有一个顶级yarn.lock
文件,没有每个包,yarn.lock
因为我们从未使用过工作区。
我们正在尝试切换到 npm,并希望package-lock.json
为 mono-repo 中的每个包生成一个文件,而不仅仅是顶级。我们应该怎么做?运行npm run lerna bootstrap --hoist
会创建一个顶级锁文件,但不包含任何"dev": true
标签,也不包含任何本地包。我已经能够做的最好的是做npm run lerna add somePackage --scope=package1
,这虽然somePackage
已经存在package
,导致package-lock.json
被在单回购为每个包生成的文件除外package1
。此外,生成的package-lock.json
文件没有任何开发依赖项。
此外,我无法进入每个包并运行,npm install
因为npm
不知道我们在其他本地包所依赖的 mono-repo 中拥有的许多本地包。奇怪的是,即使在package-lock.json
通过 .npm 从 npm 生成的文件中lerna add
,这些文件也不包含对本地包的任何引用,只有外部包。
那么:如何为package-lock.json
还包含 devDependencies 的 mono-repo 中的每个包生成一个文件?
我想为node_modules/my-package/...
我的图书馆之一创建一个环境。
我的package.json
被认为是有效的。我有一个名字和一个版本以及其他一些字段:
(this is node-modules/my-paclage/package.json)
{
"name": "my-package",
"version": "1.0.0",
...
}
Run Code Online (Sandbox Code Playgroud)
然后我想将它添加到package-lock.json
文件中,以便 npm 知道它。如果你不这样做,一个npm install ...
或npm uninstall ...
实际上删除了my-package
我在node-modules/...
.
所以我决定将信息添加到我的package-lock.json
. 我添加的只是这样的版本:
(this is package-lock.json)
...
"dependencies": {
...
"my-package": {
"version": "1.0.0"
}
...
}
....
Run Code Online (Sandbox Code Playgroud)
同样,语法本身是正确的。但是,通过该条目,当我尝试执行 an npm install ...
ornpm uninstall ...
它时,它告诉我:
错误 404 未找到:krypton-search@1.0.0
我究竟做错了什么?
以下是问题的描述:-
预期行为是为包文件夹中的每个包生成一个 package-lock.json 文件。
当前行为 我当前的项目结构如下:-
packages/internal-package-1/package.json
packages/internal-package-2/package.json
packages/internal-package-3/package.json
lerna.json
package.json
package-lock.json
Run Code Online (Sandbox Code Playgroud)
现在如上图所示,只有一个 package-lock.json 文件是为 . 整个项目,它只包含顶部 package.json 文件中的依赖项。
我的期望是对于每个 package.json 文件都应该生成相应的 package-lock.json 但事实并非如此。此外,顶层 package-lock.json 文件仅包含顶层 package.json 中的依赖项,而不包含在每个 package.json 文件中声明的所有依赖项。
现在,如果我们尝试在不同的项目中使用例如 internal-package-1 ,因为此包没有锁定文件,则会下载最新版本的依赖项,这不是预期的行为。
可能的解决方案 可能的解决方案或期望是为每个包生成一个锁定文件。
lerna.json
{
"packages": [
"packages/*",
"packages/Foundation/src/SampleNestedModule"
],
"version": "0.0.0"
}
Run Code Online (Sandbox Code Playgroud)
这个问题正在影响我们,因为锁定文件不是为每个包生成的,如果我尝试在不同的项目中使用 internal-package-1,那么锁定的依赖项不会被下载,但它们的最新版本会被下载。
我们正在提升依赖项,因此我们修改了 npm install 脚本,如下所示:-
"install": "lerna bootstrap --hoist"
,这正确提升了依赖项,但不会为单个包生成锁定文件。
可执行版本
lerna --version 3.17.0
npm --version 6.10.1
yarn --version Not using yarn
node --version 10.16.0
| OS | Version |
MACOS
| NAME …
Run Code Online (Sandbox Code Playgroud) 我们最近从切换greenkeeper
到dependabot
我们的依赖检查,我们注意到,dependabot
在打开的PR只改变package-lock.json
离开package.json
,因为它是。
另一方面,greenkeeper
, 正在提交对两个文件的更改。
到底是怎么回事?这是正常的还是我们在设置中遗漏了什么?
github package.json greenkeeper package-lock.json dependabot
除了npm update 修改 package.json之外,这些命令有什么本质区别?
rm package-lock.json
npm install
Run Code Online (Sandbox Code Playgroud)
npm update --dev
Run Code Online (Sandbox Code Playgroud) npm ×8
package.json ×5
node.js ×3
npm-install ×3
lerna ×2
dependabot ×1
dependencies ×1
github ×1
greenkeeper ×1
javascript ×1
monorepo ×1
npm-registry ×1
npm-update ×1
shrinkwrap ×1