停止 npm 在我的 ASP NET Core Web 项目上恢复整个存储库

Stop npm restoring entire repository on my ASP NET Core web project

问题: 恢复后,在ASP NET Core project > Dependencies\npm\ 中包含(恢复)了很多奇怪的包。与我的 package.json 配置文件不对应的包。如何停止?

在一个 Empty ASP.NET Core Web 项目中,我将使用 angular2 作为 UI 项目,我添加了 package.json 文件和 dependenciesdevDependencies 节点。

{
  "name": "myProject",
  "version": "1.0.0",
  "scripts": {
    "start": "npm run tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "lite": "lite-server",
    "typings": "typings",
    "postinstall": "typings install"
  },
  "license": "ISC",
  "dependencies": {
    "@angular/common": "2.0.0-rc.1",
    "@angular/compiler": "2.0.0-rc.1",
    "@angular/core": "2.0.0-rc.1",
    "@angular/http": "2.0.0-rc.1",
    "@angular/platform-browser": "2.0.0-rc.1",
    "@angular/platform-browser-dynamic": "2.0.0-rc.1",
    "@angular/platform-server": "2.0.0-rc.1",
    "@angular/router": "2.0.0-rc.1",
    "@angular/router-deprecated": "2.0.0-rc.1",
    "@angular/upgrade": "2.0.0-rc.1",
    "es6-shim": "^0.35.1",
    "reflect-metadata": "0.1.3",
    "rxjs": "5.0.0-beta.6",
    "systemjs": "^0.19.27",
    "zone.js": "^0.6.12",
    "bootstrap": "3.3.6",
    "jquery": "2.2.3",
    "font-awesome": "4.6.1",
    "toastr": "2.1.2",
    "chart.js": "2.1.3",
    "signature_pad": "^1.5.3",
    "moment": "2.13.0",
    "fullcalendar": "2.7.1",
    "fullcalendar-scheduler": "1.3.1"
  },
  "devDependencies": {
    "concurrently": "^2.0.0",
    "lite-server": "^2.2.0",
    "typescript": "^1.8.10",
    "typings": "^0.8.1",
    "bootstrap": "3.3.6",
    "font-awesome": "4.6.1",
    "toastr": "2.1.2",
    "signature_pad": "^1.5.3"
  }
}

立即 Dependencies 文件夹,从项目结构通知我必须恢复 npm 包。 我打开了 npm 文件夹,我在那里看到了来自 package.json 的引用,然后我按下了 [restore]

npm 文件夹恢复结束时,在 Dependencies 下,我看到 自动添加了很多引用
node_modules 文件夹包含 361 个包,而不是我的:package.json.

中定义的 28 个包

我不知道为什么他们被包括在内。 有谁知道为什么会这样?如何避免冗余 ...

我看到可以一个一个地卸载软件包....我应该从 npm 文件夹中卸载它们吗?

谢谢。

简短回答:您不应该删除或卸载额外的软件包。它们是 package.json.

中列出的包的依赖项

较新版本的 npm 更改了包依赖项的安装方式。旧版本总是会在包的文件夹下安装包的依赖项,并将每个包的依赖项安装在它们的文件夹下,等等。这有利于隔离依赖关系,但它会导致深度嵌套的文件夹结构,导致 Windows 出现问题,因为它们会超过 MAX_PATH。较新版本的 npm 在根文件夹中安装可共享的子依赖项。您看到的包集与之前大致相同,只是文件夹结构更扁平。

现在,在最近 ASP.NET Core RC2 发布之前,VS 的 Web 工具并没有很好地显示这个新结构。所有这些扁平化的包都将显示为 "extraneous" 根包。如果您可以将 Web 工具升级到 RC2 版本,那么您应该会在 npm 节点下看到您期望的内容:只有您的 package.json 中的包,其他包嵌套在它们下面。