Jsmin在包含子文件夹的文件夹上

时间:2010-12-20 14:54:04

标签: javascript compression

我正在运行jsmin来压缩我的ASP.Net Web应用程序的所有javascript文件,作为csproj文件中的postbuild事件,如下所示:

  

“JsMin.exe”   “$(PROJECTDIR)脚本”   “$(PROJECTDIR)脚本\ minified.js”

当我将所有js文件保存在脚本文件夹的根目录中时,这工作正常。但是当它开始在这个文件夹中变成很多文件时,我决定将文件分成子文件夹。现在似乎jsmin只获取根文件夹中的js文件,我看不出它有任何选项可以在子文件夹中包含文件。对于像这样的情况,有没有人有一个很好的解决方案?在我看来,它应该是一个非常常见的事情,所以这就是为什么我有点惊讶它不是jsmin.exe启用子文件夹的参数。

2 个答案:

答案 0 :(得分:1)

您应该可以使用DOS'for命令来执行此操作:

for /R "$(ProjectDir)scripts/debug" %s in (*.js) do JsMin.exe %s > "$(ProjectDir)scripts/release/%~ns.min.js"

假设脚本位于名为〜/ scripts / debug的目录中(或目录中),并将它们缩小为〜/ scripts / release,并将.js替换为.min.js。

我在CMD中测试过,但不是VS中的构建事件。因此,您可能需要稍微调整语法。

答案 1 :(得分:0)

派对有点晚了,但下面是让Dave Ward建议递归缩小javascript文件的代码。

以下是使用Visual Studio构建事件移植的代码:

for /r "$(ProjectDir)scripts" %%s in (*.js) do $(SolutionDir)tools\jsmin.exe < %%s > "$(ProjectDir)debug\%%~ns.min.js"  

type "$(ProjectDir)debug\*.min.js" | "$(SolutionDir)tools\jsmin.exe" > "$(ProjectDir)release\local.min.js"

del "$(ProjectDir)debug\*.min.js"

上面的代码为所有脚本递归脚本文件夹(根目录和子目录),并将它们放在一个调试文件夹中(只要你在其上设置了读/写权限,它就可以是你目录中的任何其他文件夹)并且它不是你递归的目录结构的一部分。它然后缩小调试目录中的所有* .min.js并在之后清理它们。我在网上搜索试图找到这个解决方案并且不能这样我希望这有助于有需要的人:)