实际上从发布中排除文件而不验证它

时间:2014-08-11 07:22:46

标签: node.js visual-studio msbuild publish node-modules

我正在尝试发布一个纯客户端项目 - 即 - 简单的html / js / css文件,在开发期间由nodejs管理。 Node创建一个非常深的路径(超过260个字符) - 在node_modules / ...内
虽然我已完全排除了node_modules:

<ExcludeFoldersFromDeployment>test;node_modules</ExcludeFoldersFromDeployment>

我尝试发布时仍会抛出异常:

Error   1   The "CollectFilesinFolder" task failed unexpectedly.
System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified     
file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.PathHelper.GetFullPathName()

我知道它特别是node_modules,因为手动删除它可以解决问题。
除此之外,排除工作正常(排除&#39;测试&#39;文件夹)。

如何防止这些文件被考虑用于发布?

2 个答案:

答案 0 :(得分:1)

我通过在全球范围内安装一些(如果不是全部)家属来解决这个问题:

npm install -g package

然后使用

安装到项目中
npm install --link

结果是NPM将为您全局安装的软件包创建快捷方式,而不是复制它们,并且似乎 msbuild 不会尝试关注这些链接。

答案 1 :(得分:0)

您可以简单地隐藏文件夹,即设置隐藏属性,aspnet_compiler将跳过它,避免发生此错误。

我已经使用TypeScript打字和grunt任务对此进行了测试,并且它们与隐藏的此文件夹完美配合。当然,npm installnpm update也可以正常使用。

如果在命令行或使用脚本中隐藏它,请使用此命令

  attrib +H "path\to\folder\to\hide"

您也可以在msbuild任务中使用此命令,如How do you handle excluded files with aspnet_compiler?的答案中所述

相关问题