未在Visual Studio中嵌套具有最新节点的NPM包

未在Visual Studio中嵌套具有最新节点的NPM包,npm,visual-studio-2015,package-managers,Npm,Visual Studio 2015,Package Managers,启动标准ASP.Net 5 Web应用程序并添加npm包后,VS2015已停止嵌套这些包。即使有一个简单的包,比如“del”,我明白了- 我确信它应该只显示主包,其依赖项嵌套在主包下面。VS现在在所有项目中都这样做,而它们过去是整齐嵌套的。添加两个或三个包最终会得到一个庞大且难以管理的无关包列表 如果从命令提示符下运行npm list,则输出将指示整齐嵌套在del下面的所有包。我尝试了npm prune和npm cache clean但没有成功。NPM报告node的版本5.4.0,如果相关的话

启动标准ASP.Net 5 Web应用程序并添加npm包后,VS2015已停止嵌套这些包。即使有一个简单的包,比如“del”,我明白了-

我确信它应该只显示主包,其依赖项嵌套在主包下面。VS现在在所有项目中都这样做,而它们过去是整齐嵌套的。添加两个或三个包最终会得到一个庞大且难以管理的无关包列表

如果从命令提示符下运行
npm list
,则输出将指示整齐嵌套在del下面的所有包。我尝试了
npm prune
npm cache clean
但没有成功。NPM报告node的版本5.4.0,如果相关的话,报告本身的版本3.5.4

我想让它正常运转


编辑-只有将默认的Node.js更改为更新的版本时,才会出现这种情况。VS2015更新1的默认值似乎是NPM 1.4.9,节点0.10.31。但还是没用。我怀疑如果不更新Visual Studio,这是无法解决的,但可能有一种巧妙的解决方法。

这是出于设计考虑,因为新版本的node在默认情况下不再嵌套NPM包。之所以改变这一点,是因为旧设计通常会导致MAX_路径问题,嵌套项目会创建路径长度,很容易超过Windows上256个字符的限制


我知道,从表示的角度来看,您喜欢嵌套,但从可靠性的角度来看,这是一个巨大的改进。Windows上的NPM用户总是遇到这个问题。

这是出于设计考虑,因为新版本的node在默认情况下不再嵌套NPM包。之所以改变这一点,是因为旧设计通常会导致MAX_路径问题,嵌套项目会创建路径长度,很容易超过Windows上256个字符的限制


我知道,从表示的角度来看,您喜欢嵌套,但从可靠性的角度来看,这是一个巨大的改进。Windows上的NPM用户一直遇到这个问题。

编辑-以下是答案

这个问题的核心是npm3决定扁平化模块目录,主要原因是使用不支持长文件路径的旧api的Windows应用程序存在问题

长文件路径似乎不是VS的问题。由于仍在积极维护npm2,如果要避免梦魇嵌套,应使用npm2分支

但是,更新node.js会安装最新的npm3分支。要将您的npm恢复到2分支,您应该以管理员身份运行Powershell,然后运行

npm安装-gnpm@2.14.14

重新启动VS。如果您已经有一个展开的目录,则打开您的
node\u modules
文件夹并删除所有内容,然后从VS GUI还原包。然后你应该回到一个可行的结构


(这确实是对Michael的回复,但我需要发布一张我在评论中无法做到的图片。)

谢谢你澄清这个立场。我希望你不会介意,如果我指出为什么我认为这是一个非常有问题的立场

首先,npm包的标准集是完全合理的

“吞咽”:“3.8.11”,
“咕噜咕噜”:“2.5.2”,
“大口喝cssmin”:“0.1.7”,
“狼吞虎咽”:“1.2.0”,
“rimraf”:“2.2.8”

以下是生成的包列表:

我想你马上就会明白这是多么不可行

其次,卸载软件包变得不可能

第三,有一些筑巢,但其原因和方式有点神秘

由此产生的结果是列出在DNX下安装的每一个ASP.Net包——实际上有数百个,而且同样不可行


我不完全理解字符限制问题,但在我看来,这更像是一个GUI问题。再次感谢。

编辑-以下是答案

这个问题的核心是npm3决定扁平化模块目录,主要原因是使用不支持长文件路径的旧api的Windows应用程序存在问题

长文件路径似乎不是VS的问题。由于仍在积极维护npm2,如果要避免梦魇嵌套,应使用npm2分支

但是,更新node.js会安装最新的npm3分支。要将您的npm恢复到2分支,您应该以管理员身份运行Powershell,然后运行

npm安装-gnpm@2.14.14

重新启动VS。如果您已经有一个展开的目录,则打开您的
node\u modules
文件夹并删除所有内容,然后从VS GUI还原包。然后你应该回到一个可行的结构


(这确实是对Michael的回复,但我需要发布一张我在评论中无法做到的图片。)

谢谢你澄清这个立场。我希望你不会介意,如果我指出为什么我认为这是一个非常有问题的立场

首先,npm包的标准集是完全合理的

“吞咽”:“3.8.11”,
“咕噜咕噜”:“2.5.2”,
“大口喝cssmin”:“0.1.7”,
“狼吞虎咽”:“1.2.0”,
“rimraf”:“2.2.8”

以下是生成的包列表:

我想你马上就会明白这是多么不可行

其次,卸载软件包变得不可能

第三,有一些筑巢,但其原因和方式有点神秘

由此产生的结果是列出在DNX下安装的每一个ASP.Net包——实际上有数百个,而且同样不可行


我不完全理解字符限制问题,但在我看来,这更像是一个GUI问题。再次感谢。

(评论框错了)(评论框错了)请看我上面/下面的“答案”。I