我试图让 Google Closure Compiler 编译我使用 Jquery 的 javascript 代码,但我不断收到变量 $ 未声明,有没有办法让它看到 $ 变量。有没有办法让闭包编译器查看 Jquery 库但不编译它。 这是我的蚂蚁脚本
<?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 文件夹中
我确信这是一个简单的问题,但我只是错过了一些东西。预先感谢!
您需要包含 jQuery 外部函数。 jQuery 的每个主要版本都有自己的 extern 文件。您可以在 http://code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fcontrib%2Fexterns
找到它们下载适当的外部文件后,您可以在编译时引用它:
<?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>
似乎您的默认外部人员未包含在您的情况中。
此链接将使您更好地理解: https://developers.google.com/closure/compiler/docs/api-tutorial3#externs
这困扰了我 3 个小时,花了很长时间才找到这个条目。我希望我的回答对某人有所帮助。
这是最简单的方法:
java -jar c:\noninstprg\closure-compiler.jar --compilation_level=ADVANCED_OPTIMIZATIONS --externs .\jquery-3.3.js .\your_source.js > ..\asset\js\your_source_mini.js
上面的
jquery-3.3.js
来自这里
到目前为止,最新的 jquery 是 3.6 ,但是 3.3 extern 对我来说工作得很好(我想我没有使用太多花哨的新东西),但要小心。