当YUICompressor缩小JavaScript时,有没有办法保留许可/信用评论?有没有特别的评论字符?或者YUICompressor中的任何标志?
谢谢,格雷斯
我正在尝试创建两个css聚合 - 一个用于公共站点,另一个用于站点的应用程序部分.
如果我输出文件${project.build.directory}/${project.build.finalName}/css/public-all.css,一切正常.
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\public-all.css
[INFO] public-all.css (32029b)
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\application-all.css
[INFO] application-all.css (50446b)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将聚合文件输出到另一个子目录,例如${project.build.directory}/${project.build.finalName}/css/public/all.css,则会出现以下错误:
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\public\all.css
[WARNING] all.css not created
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\application\all.css
[WARNING] all.css not created
Run Code Online (Sandbox Code Playgroud)
为什么他们没有被创造?为什么这甚至是一个警告而不是插件的失败?
这是pom.xml我指定聚合的部分.为什么这不起作用?
<aggregation>
<removeIncluded>false</removeIncluded>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/css/public/all.css</output>
<includes>
<include>**/public/base.css</include>
<include>**/fancybox/jquery.fancybox-1.3.4.css</include>
</includes>
</aggregation>
<aggregation>
<removeIncluded>false</removeIncluded>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/css/application/all.css</output>
<includes>
<include>**/application/reset.css</include>
<include>**/application/text.css</include>
<include>**/application/960.css</include>
<include>**/smoothness/jquery-ui-1.8.11.custom.css</include>
<include>**/application/base.css</include>
<include>**/jcrop/jquery.jcrop.css</include>
<include>**/farbtastic/farbtastic.css</include>
</includes>
</aggregation>
Run Code Online (Sandbox Code Playgroud)
我检查过,这些目录也存在.如果我尝试指向不存在的目录,yuicompressor:compress则会失败.我只是不明白为什么构建过程实际成功给定有效目录,但它不会在这些目录中创建文件.这没有道理!
我想也许这可能是一个文件系统安全问题,但事实并非如此.
我真的很困惑,为什么这不起作用.
请帮忙.
我希望能够在我的项目文件夹中运行单个命令,以将我的所有javascript文件(可能与YUI Compressor)连接并压缩为单个输出文件.
如果可能的话,我想部分指定它们连接在一起的顺序,但不必跟踪每个单独的javascript文件.也许可以构建一个如下所示的配置文件:
application.js
excanvas.js
json2.js
jquery*.js
flot/*
backbone*.js
app/screen-*.js
app/main.js
app/crud-*.js
app/*
*
Run Code Online (Sandbox Code Playgroud)
有没有人知道要做这样的事情的现有工具,可以将bash/ruby/node/perl脚本连在一起,甚至是更好的方法?我正在构建一个具有大量JS使用的单页应用程序(~40个文件),供低带宽的人使用.
我需要解决方案在我的OS X开发机器上可执行.
问题是,当我运行YUI压缩器(.NET MsBuild任务)时,缩小的css文件保留与原始css文件相同的相对路径,并且在给定我的内容结构的情况下,这会导致图像和其他资源的路径不正确.YUI是否可以选择将其配置为重写此URL?如果没有,是否有其他工具可以帮助解决这个问题?
是否有任何压缩机负责移除在应用程序中无法调用的开关盒?
function execute_case(id) {
switch(id) {
case 0:
console.log("0");
break;
case 1:
console.log("1");
break;
case 2:
console.log("2");
break;
case 3:
console.log("3");
break;
default:
console.log("default");
break;
}
}
execute_case(1);
Run Code Online (Sandbox Code Playgroud)
如果以上就是我所拥有的,那么理论上情况0,2,3就是死代码并且永远不会被执行.在缩小代码时,是否有任何压缩器具有删除此代码的智能?
我正在看一段代码,它在一个switch语句中有超过200,000个案例,因此问题.
谢谢,-Vikrant
javascript performance yui-compressor google-closure-compiler
使用YUICompressor我从我的JavaScript代码中收到以下错误:
[ERROR] 270:201:missing name after . operator
[ERROR] 292:6:missing ; before statement
以下是以下行的javascript代码:
第270行:
new _ow.getScript(_ow.wwwurl+'/widget/save?title='+encodeURIComponent(this.obj.title.value)+'&url='+encodeURIComponent(this.obj.url.value)+'&tags='+this.obj.tags.value+'&private='+this.obj.private.checked+'&c='+this.obj.notes.value+'&service='+services+'&token='+(_ow.token ? encodeURIComponent(_ow.token): ''), function(data) {
Run Code Online (Sandbox Code Playgroud)
第292行:
});
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚问题是什么,因为这个Javascript代码适用于所有浏览器.
编辑:我将行分成多行,并发现此代码生成"缺少名称后.运算符":
this.obj.private.checked
Run Code Online (Sandbox Code Playgroud)
是私人的关键词,使YUI压缩机发疯?
我们有一些ASP.net页面,其中包含超过50行特定于该页面的JavaScript.我们想在CruiseControl构建过程中缩小javascript.
我们已经使用YUI Compressor来压缩我们的完整javascript和css文件.但我们无法弄清楚如何进行内联javascript.
是否有一个MSBuild任务来旋转asp.net页面并缩小javascript?
这是交易,我们有一个我们想要压缩的大型JS库,但如果它找到一个"eval"语句,YUI压缩器不能完全压缩代码,因为担心它会破坏别的东西.这很好,但是我们确切地知道什么是eval'd,所以我们不希望它变得保守,因为在MooTools JSON.decode中有一个eval语句
所以基本上问题是,是否有任何替代(可能是创造性的)方法来编写一个返回eval函数的表达式?我试了几个,但没有骰子:
window['eval'](stuff);
window['e'+'val'](stuff);
// stuff runs in the global scope, we need local scope
this['eval'](stuff);
// this.eval is not a function
(new Function( "with(this) { return " + '(' + stuff + ')' + "}"))()
// global scope again
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
我有一个ant构建,将我的javascript连接到一个文件然后压缩它.问题是Visual Studio的默认编码会将BOM附加到每个文件.如何配置ant以去除原本会出现在结果连接文件中间的BOM?
我的googl'ing透露了这个讨论,这是我遇到的确切问题,但没有提供解决方案:http://marc.info/?l = person-user&m = 118598847927096
我在C:\ Bin\test.js中有一个文件,我想压缩并重命名为test-min.js
我的ant build.xml看起来像这样:
<property name="temp.dir" value="C:\Bin\"/>
<apply executable="java" parallel="false" dest="${temp.dir}">
<fileset dir="${temp.dir}" includes="test.js"/>
<arg line="-jar"/>
<arg path="${yui.dir}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="*-min.js"/>
<targetfile/>
</apply>
Run Code Online (Sandbox Code Playgroud)
我收到以下Java错误:
[apply] java.io.FileNotFoundException:Bintest-min.js:\ Bin\test.js(文件名,目录名或卷标语法不正确)
我已经尝试过我可以提出的路径和文件名的每种组合.我错过了什么?看起来它正在剥离C:\和第二个\
我知道YUI有效,因为我可以从命令行手动完成.