【发布时间】:2014-09-23 09:03:32
【问题描述】:
我做了一个自定义的 grunt 任务,将过滤后的文件嵌入到 Visual Studio C# 项目文件 (*.csproj) 中。
任务 (vsembed) 是我正在使用 grunt 开发的自定义构建系统的一部分。
不过,这个问题很奇怪……
TL;DR
如果我运行特定目标的任务 - 成功。如果我一次运行所有目标 - 退出且没有错误。
加长版。
如果我运行指定目标的任务(因此它运行一次),它会成功完成,如下所示:
C:\StoneOS>grunt vsembed:StoneOS.Modules.Pages.views --debug --verbose
Initializing
Command-line options: --debug=1, --verbose
Reading "Gruntfile.js" Gruntfile...OK
Registering Gruntfile tasks.
Reading package.json...OK
Parsing package.json...OK
Initializing config...OK
Registering "grunt_tasks" tasks.
Loading "vsembed.js" tasks...OK
+ vsembed, vsrembed
Registering "grunt-msbuild" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-msbuild\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-msbuild\package.json...OK
Loading "msbuild.js" tasks...OK
+ msbuild
Registering "grunt-contrib-compass" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-compass\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-compass\package.json...OK
Loading "compass.js" tasks...OK
+ compass
Registering "grunt-contrib-copy" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-copy\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-copy\package.json...OK
Loading "copy.js" tasks...OK
+ copy
Registering "grunt-contrib-clean" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-clean\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-clean\package.json...OK
Loading "clean.js" tasks...OK
+ clean
Loading "Gruntfile.js" tasks...OK
+ assets, default, development, embed, release, rembed
Running tasks: vsembed:StoneOS.Modules.Pages.views
Running "vsembed:StoneOS.Modules.Pages.views" (vsembed) task
[D] Task source: grunt_tasks\vsembed.js
Verifying property vsembed.StoneOS\.Modules\.Pages\.views exists in config...OK
File: [no files]
Options: project="C:\\StoneOS\\src\\StoneOS.Modules.Pages", directories=["views"], extensions=".cshtml"
Found embeddable files within filesystem: [ 'views\\websocket.cshtml', 'views\\websocket\\script.cshtml' ]
Acceptable item: <EmbeddedResource Include="views\websocket.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\websocket\script.cshtml"/>
Included 2 files.
Written 3861 bytes to: C:\StoneOS\src\StoneOS.Modules.Pages\StoneOS.Modules.Pages.csproj
Done, without errors.
如果我为整个组运行任务,它有时会完成 3 个目标,有时会完成 4 个目标,有时会在完成第 4 个目标时退出。这是最新运行的输出,它在上面特定目标示例中所示的相同任务处停止,即第 4 个任务。
C:\StoneOS>grunt vsembed --debug --verbose
Initializing
Command-line options: --debug=1, --verbose
Reading "Gruntfile.js" Gruntfile...OK
Registering Gruntfile tasks.
Reading package.json...OK
Parsing package.json...OK
Initializing config...OK
Registering "grunt_tasks" tasks.
Loading "vsembed.js" tasks...OK
+ vsembed, vsrembed
Registering "grunt-msbuild" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-msbuild\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-msbuild\package.json...OK
Loading "msbuild.js" tasks...OK
+ msbuild
Registering "grunt-contrib-compass" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-compass\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-compass\package.json...OK
Loading "compass.js" tasks...OK
+ compass
Registering "grunt-contrib-copy" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-copy\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-copy\package.json...OK
Loading "copy.js" tasks...OK
+ copy
Registering "grunt-contrib-clean" local Npm module tasks.
Reading C:\StoneOS\node_modules\grunt-contrib-clean\package.json...OK
Parsing C:\StoneOS\node_modules\grunt-contrib-clean\package.json...OK
Loading "clean.js" tasks...OK
+ clean
Loading "Gruntfile.js" tasks...OK
+ assets, default, development, embed, release, rembed
Running tasks: vsembed
Running "vsembed" task
[D] Task source: grunt_tasks\vsembed.js
Running "vsembed:StoneOS.Modules.Authentication.views" (vsembed) task
[D] Task source: grunt_tasks\vsembed.js
Verifying property vsembed.StoneOS\.Modules\.Authentication\.views exists in config...OK
File: [no files]
Options: project="C:\\StoneOS\\src\\StoneOS.Modules.Authentication", directories=["views"], extensions=".cshtml"
Found embeddable files within filesystem: [ 'views\\login.cshtml' ]
Acceptable item: <EmbeddedResource Include="views\login.cshtml"/>
Included 1 files.
Written 4605 bytes to: C:\StoneOS\src\StoneOS.Modules.Authentication\StoneOS.Modules.Authentication.csproj
Running "vsembed:StoneOS.Modules.Installer.views" (vsembed) task
[D] Task source: grunt_tasks\vsembed.js
Verifying property vsembed.StoneOS\.Modules\.Installer\.views exists in config...OK
File: [no files]
Options: project="C:\\StoneOS\\src\\StoneOS.Modules.Installer", directories=["views"], extensions=".cshtml"
Found embeddable files within filesystem: [ 'views\\introduction.cshtml',
'views\\layouts\\installer.cshtml' ]
Acceptable item: <EmbeddedResource Include="views\introduction.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\layouts\installer.cshtml"/>
Included 2 files.
Written 3470 bytes to: C:\StoneOS\src\StoneOS.Modules.Installer\StoneOS.Modules.Installer.csproj
Running "vsembed:StoneOS.Modules.Main.views" (vsembed) task
[D] Task source: grunt_tasks\vsembed.js
Verifying property vsembed.StoneOS\.Modules\.Main\.views exists in config...OK
File: [no files]
Options: project="C:\\StoneOS\\src\\StoneOS.Modules.Main", directories=["views"], extensions=".cshtml"
Found embeddable files within filesystem: [ 'views\\test.cshtml',
'views\\layouts\\logo.cshtml',
'views\\layouts\\main.cshtml',
'views\\errors\\403.cshtml',
'views\\errors\\404.cshtml' ]
Acceptable item: <EmbeddedResource Include="views\test.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\layouts\logo.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\layouts\main.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\errors\403.cshtml"/>
Acceptable item: <EmbeddedResource Include="views\errors\404.cshtml"/>
Included 5 files.
Written 7090 bytes to: C:\StoneOS\src\StoneOS.Modules.Main\StoneOS.Modules.Main.csproj
Running "vsembed:StoneOS.Modules.Pages.views" (vsembed) task
[D] Task source: grunt_tasks\vsembed.js
Verifying property vsembed.StoneOS\.Modules\.Pages\.views exists in config...OK
File: [no files]
对于“强制退出”,我的意思是,正如您在上面看到的,它以 File: [no files] 结尾,这是在详细模式下运行时的原生 grunt 功能。它总是后跟Options,如上面的三个目标输出所示。
感觉好像是在达到超时或某些内存限制后发生的。
如果我删除一些基于XML 的任务,该任务将完成(虽然,失去了所有目的),所以我认为问题可能出在libxmljs。是什么让我只假设,是最后一个输出 - 甚至 grunt 本机输出也被切断了。
运行Windows 7 x64、node v0.10.29、npm 1.4.14、grunt-cli v0.1.13、grunt v0.4.5。
我真的没有线索......
什么可能导致单个目标执行但多个顺序“静默失败”的问题?
【问题讨论】:
标签: javascript node.js gruntjs libxml-js