如何使用 npm install 或 yarn 仅安装具有自己版本的 package.json 依赖项

Posted

技术标签:

【中文标题】如何使用 npm install 或 yarn 仅安装具有自己版本的 package.json 依赖项【英文标题】:how to install only package.json dependencies with their own versions by using npm install or yarn 【发布时间】:2019-03-19 13:14:48 【问题描述】:

我在一个新项目上工作,但我无法正确安装软件包。我用了npm installyarnnpm install --only=dev,但是还不够。我也尝试删除 node_modules 和 package-lock.json。状态是一样的。

我们在项目中使用的是 babel 的 6.x 版本。 Babel 有一个更新,7.x,我想我在运行 npm installnpm install --only=devyarn 时收到错误是因为版本差异。

npm WARN deprecated babel-preset-es2015@6.24.1: � 感谢您使用 Babel:我们建议现在使用 babel-preset-env:请阅读 babeljs.io/env 进行更新! npm notice 创建了一个锁文件作为 package-lock.json。你应该提交这个文件。 npm WARN babel-loader@8.0.4 需要 @babel/core@^7.0.0 的对等点,但没有安装。您必须自己安装对等依赖项。 npm WARN babel-loader@8.0.4 需要 webpack@>=2 的对等点,但没有安装。您必须自己安装对等依赖项。

我使用 WebStorm。在此之前,我尝试使用 npm install 为另一个项目获取包。 “npm”不成功。 WebStorm 建议我使用 Yarn,我使用了 Yarn。它奏效了。

我应该在该州做什么?

npm install 之后,当我运行parcel index.html 时,我得到控制台错误

"Uncaught TypeError: window.fooes is not a constructor", Uncaught ReferenceError: regeneratorRuntime is not defined。

我知道代码没有问题,因为项目可以在团队的计算机上正确运行。

【问题讨论】:

安装模块后尝试运行npm i webpack 您可以删除.lock 文件并重新尝试安装。您还应该检查package.json 以及其中提到的版本号。 【参考方案1】:

第一个也是最重要的:

切勿同时使用npmyarn。选择其中一个并使用它,只是因为它们都使用基于已安装包的锁定文件。

使用哪一个:

npmyarn 都在使用 NPM 软件注册数据库。所以最终安装软件包时的最终结果是相同的,但yarn 的工作速度要快得多。 Yarn 是由 Facebook 开发的,因为 npm 的速度慢。所以我更喜欢yarn,我不再使用npm 命令了。

你的问题:

删除项目根目录中的package-lock.jsonyarn.lock 锁定文件。 同时删除整个node_modules 目录。 现在您只有package.json 文件。 备份此文件! 打开原来的package.json,建议你先删除里面的所有条目 与Babel相关并保存。 现在在项目根目录(package.json 文件所在的位置)中运行yarn 命令(不带参数)。这应该会再次安装您的所有软件包。

然后使用这些命令安装Babel 的最新包:

yarn add -D @babel/core yarn add -D @babel/preset-env yarn add -D babel-loader

您可能需要来自Babel 的其他软件包。查看您备份的 package.json 并在 npm registry 或 Babel's plugins documentation page 中搜索剩余插件(如果有)的最新版本。

【讨论】:

谢谢。它几乎起作用了。当我使用命令安装 Babel 的包时,我看到“webpack 依赖”,所以我再次安装 webpack。 Webpack get a info info fsevents@1.2.4: the platform "win32" is in compatible with this module. info "fsevents@1.2.4" 是一个可选的依赖项并且兼容性检查失败。从安装中排除它。我无法解决这个问题。我的窗户是 x64。我无法理解。如果我忽略 fsevents 错误,当我尝试 parcel index.html 时,我得到了同样的错误 Uncaught TypeError: window.fooes is not a constructor @yellowpis​​agor 您可以放心地忽略fsevents 警告。我也在 Windows 上,我经常看到这个警告。完全没问题,因为 fsevents 仅在 Mac OS 上需要。警告还说它是optional dependency。在 Windows 上监视文件系统更改只会让你四个人工作,没问题。我不使用parcel,但我认为您的window.fooes 错误是因为您的parcel 配置文件或您自己的.js 文件中的一些错误。

以上是关于如何使用 npm install 或 yarn 仅安装具有自己版本的 package.json 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

编剧错误:未下载 Firefox 修订版。运行“npm install”或“yarn install”

使用命令 npm install -g yarn 安装 Yarn 时,出现错误

使用 npx install react-create-app 时将 yarn 更改为 npm

Yarn 中“npm install --save”的等价物是啥?

我可以使用 npm install 代替 yarn add 命令吗? [关闭]

Windows下Yarn安装与使用