2012-08-15 45 views
4

我試圖讓谷歌關閉編譯合作,編譯使用jQuery的我的JavaScript代碼,但我不斷收到變量$是未申報是有辦法讓它看到$變量。有沒有辦法讓編譯器查看Jquery庫但不編譯它。 這裏是我的Ant腳本

<?xml version="1.0"?> 
<project basedir="." default="compile"> 

<taskdef name="jscomp" classname="com.google.javascript.jscomp.ant.CompileTask" 
     classpath="build/compiler.jar"/> 

<target name="compile"> 

<jscomp compilationLevel="simple" warning="verbose" 
     debug="false" output="output/file.js"> 

    <sources dir="${basedir}/src"> 
    <file name="js.js"/><!-- the file I'm trying to compile --> 
    </sources> 

</jscomp> 

</target> 

</project> 

我的jQuery庫被稱爲min.js及其與js.js src文件夾

我敢肯定,這是一個簡單的問題,但我只是缺少一些東西。提前致謝!

+2

[這裏有一個類似的問題(HTTP:// stackoverflow.com/questions/9592534/google-closure-compiler-and-jquery)和[一篇文章](http://www.netmagazine.com/tutorials/shrink-javascript-files-google-closure-compiler)提及將jQuery聲明爲extern – MrOBrian 2012-08-15 20:42:45

+0

似乎不包含默認的外部函數 – KKP 2012-08-15 20:43:57

回答

5

您需要包括jQuery的實習醫生。 jQuery的每個主要版本都有自己的extern文件。您可以在http://code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fcontrib%2Fexterns

找到他們,一旦你下載了相應extern類型,這裏是你將如何引用它在編譯:

<?xml version="1.0"?> 
<project basedir="." default="compile"> 

<taskdef name="jscomp" classname="com.google.javascript.jscomp.ant.CompileTask" 
     classpath="build/compiler.jar"/> 

<target name="compile"> 

<jscomp compilationLevel="simple" warning="verbose" 
    debug="false" output="output/file.js"> 

    <sources dir="${basedir}/src"> 
    <file name="js.js"/><!-- the file I'm trying to compile --> 
    </sources> 

    <externs dir="${basedir}/src"> 
    <file name="jquery-1.7.js"/> 
    </externs> 
</jscomp> 

</target> 

+0

這就是我所缺少的。 – Justin 2012-08-16 16:59:53

+0

我不清楚爲什麼extern是'簡單'模式所必需的。谷歌自己的閉包編譯器服務似乎讓我在沒有jQuery Extern的情況下進行編譯。 – jedierikb 2013-12-18 19:52:06

+1

@jedierikb不幸的是,Closure編譯器Web服務以針對演示進行了優化的模式運行,不建議用於生產編譯。它假定所有未聲明的符號都是使用'third_party'標誌的外部符號。您也可以將'warning_level'選項設置爲'QUIET'。 – 2013-12-18 22:25:11