asp.net - 我已经从 MSBUILD 中排除了 node_modules,但它仍然遍历目录并且需要永远
问题描述
在某些时候,我的项目构建开始需要很长时间。它不是一个大项目,它与项目根目录直接相关node_modules
,并且被排除在项目之外!
<PropertyGroup>
<DefaultInstallExcludes>packages\**</DefaultInstallExcludes>
<DefaultInstallExcludes>$(DefaultInstallExcludes);**\node_modules\**;node_modules\**</DefaultInstallExcludes>
</PropertyGroup>
<ItemGroup>
<InstallInclude Include="**\*.ascx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.asmx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.css" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.html" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.aspx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.js" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\images\**" Exclude="$(DefaultInstallExcludes)" />
</ItemGroup>
似乎它正确地排除了所有文件,但它仍在扫描整个目录。如何让它node_modules
在构建过程中完全忽略该文件夹?工具版本为 3.5。这过去需要 <30 秒,并且在某个时候开始需要约 10 分钟。VS 社区 2019。
解决方案
我认为问题在于InstallInclude
您的自定义项目而不是系统项目。并且大多数文件node_modules
是系统项目,如None
或Content
。这些显示在解决方案资源管理器上,并由 msbuild 扫描。
本文档下列出了系统构建操作。
您所做的是使新InstallInclude
项目不包含来自node_modules
和的文件packages
。但是系统项目包含node_modules
文件夹,所以它会一直扫描文件夹。
建议
您应该从系统项目中排除该文件夹。
对于 new-sdk 项目,DefaultItemExcludes
确实有效,但不适用于网络框架项目。
如果您的项目目标为Net Framework
,则应使用任何系统项 remove 来删除这些文件。
用这个:
<ItemGroup>
<Content Remove="node_modules\**" />
<Compile Remove="node_modules\**" />
<EmbeddedResource Remove="node_modules\**" />
<None Remove="node_modules\**" />
<Compile Remove=node_modules\**" />
<TypeScriptCompile Remove="node_modules\**" />
.... any system item
</ItemGroup>
<PropertyGroup>
<DefaultInstallExcludes>packages\**</DefaultInstallExcludes>
<DefaultInstallExcludes>$(DefaultInstallExcludes);**\node_modules\**;node_modules\**</DefaultInstallExcludes>
</PropertyGroup>
<ItemGroup>
<InstallInclude Include="**\*.ascx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.asmx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.css" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.html" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.aspx" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\*.js" Exclude="$(DefaultInstallExcludes)" />
<InstallInclude Include="**\images\**" Exclude="$(DefaultInstallExcludes)" />
</ItemGroup>
从 tsconfig 文件中排除:
修改tsconfig.json
:
{
"compilerOptions": {
....
},
"include": [
...
],
"exclude": [
"node_modules"
],
.....
}
修改tsconfig.spec.json
文件:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
....
],
"include": [
....
],
"exclude": [
"node_modules/**/*"
]
}
推荐阅读
- r - 在日期的 data.frame 中查找每个单元格的小时数
- azure-functions - 为什么我没有从 Azure Monitor 检索所有服务总线指标?
- ios - 无法安装 .ipa
- symfony - 401 Unauthorized : /login_check 上的凭据错误
- python-3.x - 如何修复二进制搜索中的“找不到元素”?
- angular - 如何在使用 Firebase 提供 Angular Universal 时修复“所有页面的视图源返回 404 屏幕的 html”
- php - Laravel 项目中的日期格式
- python - uwsgi 与 Django,为什么要在系统范围内安装 uwsgi,它如何与源代码集成?
- amazon-web-services - 在基于 aws appsync 的聊天应用程序中显示在线用户
- sip - SIP注册流程