如何使用 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 install
、yarn
、npm install --only=dev
,但是还不够。我也尝试删除 node_modules 和 package-lock.json。状态是一样的。
我们在项目中使用的是 babel 的 6.x 版本。 Babel 有一个更新,7.x,我想我在运行 npm install
、npm install --only=dev
、yarn
时收到错误是因为版本差异。
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】:
第一个也是最重要的:
切勿同时使用npm
和yarn
。选择其中一个并使用它,只是因为它们都使用基于已安装包的锁定文件。
使用哪一个:
npm
和 yarn
都在使用 NPM 软件注册数据库。所以最终安装软件包时的最终结果是相同的,但yarn
的工作速度要快得多。 Yarn
是由 Facebook 开发的,因为 npm
的速度慢。所以我更喜欢yarn
,我不再使用npm
命令了。
你的问题:
删除项目根目录中的package-lock.json
和yarn.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
@yellowpisagor 您可以放心地忽略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”的等价物是啥?