【问题标题】:Why are so many packages being installed under node_modules?为什么 node_modules 下安装了这么多包?
【发布时间】:2016-07-22 14:05:16
【问题描述】:

我正在尝试了解 NPM 如何与 VS 2015 和 .Net Core 配合使用。我正在关注本教程:http://www.mikesdotnetting.com/article/283/asp-net-5-managing-client-side-dependencies-with-npm-bower-and-gulp

我的 package.json 看起来像这样:

{
  "version": "1.0.0",
  "name": "asp.net",
  "private": true,
  "devDependencies": {
    "gulp": "3.8.11",
    "gulp-concat": "2.5.2",
    "gulp-cssmin": "0.1.7",
    "gulp-uglify": "1.2.0",
    "rimraf": "2.2.8"
  }
}

我期待在 src/node_modules 下有 Gulp、Gulp-Contact、Gulp-Cssmin、Gulp-Uglify 和 Rimraf。相反,我看到了 200 多个包,并且在我的 package.json 中列出的包中,似乎只安装了 Gulp。

如何删除我不想要的包以及如何确保安装了我需要的包?

编辑: 进一步深入研究,我尝试在我的项目目录中以管理员权限从 Powershell 运行 npm cache clear,但出现此错误:

Error: EPERM: operation not permitted, rmdir 'C:\Users\me\AppData\Roaming\npm-cache'

这让我很惊讶,因为我希望缓存会清除 src/node_modules。有谁知道 Visual Studio 使用哪个版本的 Node?和/或VS使用的node.exe通常位于的位置(使用Win 10)

从 Visual Studio 包管理器控制台运行 npm cache clear(以管理员身份运行 VS)清除了所有内容。我仍然不确定为什么会这样。

【问题讨论】:

  • npm 扁平化依赖关系。
  • 好的,那么所有这些包都是我 package.json 中包的依赖项?
  • @smulholland2:它们扁平化的原因是为了减少硬盘存储和带宽。如果包 A 和 B 依赖于相同版本的包 C,则 C 之前将被下载两次。一次在 A 的 node_module 中,一次在 B 的 node_module 文件夹中。另一个:避免 windows 最大路径长度的问题。当您有许多嵌套文件夹时,它们可能是 Windows 上的问题

标签: node.js visual-studio-2015 npm asp.net-core


【解决方案1】:

如果您的包像我的一样不同步,请按照以下步骤删除不需要的包,并确保您的 package.json 中列出了这些包。

  1. 关闭 Visual Studio
  2. 删除 src 中的 bower_components 和 node_modules 目录。
  3. 使用管理员权限重新打开 VS,但不要重新打开项目。
  4. 从包管理器控制台运行npm cache clear

注意:npm 必须是环境变量,您必须安装 Node.js 还是将 Visual Studios Node.js 设置为 PATH。

这是一篇关于如何使用新版本 npm 的好帖子,而不是 VS2015 随附的版本。 http://jameschambers.com/2015/09/upgrading-npm-in-visual-studio-2015/

【讨论】:

    猜你喜欢
    • 2016-10-03
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多