我目前正在尝试将旧的ASP.NET WebSite项目迁移到Visual Studio 2015.我想使用NPM / Gulp自动将LESS文件编译为CSS(此任务由WebEssentials完成VS 2013)。
我在项目中添加了package.json
文件以加载所需的组件。这会在WebSite项目的根目录中创建一个node_modules
文件夹,这就是我的问题所在:
由于WebSite项目没有项目文件,因此项目根文件夹中的所有文件(和子目录)都自动成为项目的一部分。由于node_modules
内的深层嵌套目录结构,由于路径名太长,这会导致错误。
一个简单的解决方法是在hidden
文件夹上设置node_modules
属性(但这必须由每个开发人员手动完成)。
有没有办法告诉NPM将节点模块放入另一个目录,例如在解决方案文件所在的项目(..\node_modules
)之上一层?
或者是否可以从gulp-task(在项目加载时运行)中设置文件夹的隐藏属性?
答案 0 :(得分:2)
根据@Rik的回答,我能够解决问题:
我没有将package.json
和gulpfile.js
添加到WebSite项目中,而是在解决方案级别添加它们(作为解决方案项)。这意味着node_modules
文件夹现在位于解决方案目录中与WebSite项目处于同一级别。
唯一的另一个变化是相应修改gulpfile.js
中的路径。
答案 1 :(得分:1)
您可能需要查看npm 3.0+。它将模块安装在最大平面结构中。它应该减少模块目录中的路径长度。
从发行说明
扁平,扁平!
您的依赖项现在将最大程度地安装。就目前而言 可能的,所有依赖项,它们的依赖项,以及它们 依赖项将安装在项目的node_modules文件夹中 没有嵌套。您只会看到彼此嵌套的模块 当两个(或更多)模块具有冲突的依赖关系时。
- #3697 这有望消除大多数情况,其中Windows用户最终使用的路径对于资源管理器和其他来说太长了 标准工具来处理。
- #6912 (#4761#4037)这也意味着您的安装将从头开始扣除。
- #5827 此重复数据删除甚至扩展到git deps。
- #6936 (#5698)现在可以识别各种命令。
这对其他命令的行为有一些影响:
- npm uninstall会删除您指定的模块的任何依赖项,这些依赖项不是任何其他模块所必需的。以前,它 只会删除那些碰巧安装在它下面的那些,
如果你被扣除,就会导致遗留下来。- npm ls现在向您展示您的依赖树围绕什么需要什么,而不是那些模块在磁盘上的位置。
- #6937 npm重复数据删除现在除了重复数据删除之外还会展平树。
https://github.com/npm/npm/releases/tag/v3.0.0
要升级Windows安装,请查看此软件包npm-windows-upgrade