无法使用ant和闭包编译器编译javascript,因为Jquery的$未声明

问题描述 投票:0回答:3

我试图让 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 文件夹中

我确信这是一个简单的问题,但我只是错过了一些东西。预先感谢!

javascript jquery ant google-closure-compiler
3个回答
5
投票

您需要包含 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>


0
投票

似乎您的默认外部人员未包含在您的情况中。

此链接将使您更好地理解: https://developers.google.com/closure/compiler/docs/api-tutorial3#externs


0
投票

这困扰了我 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 对我来说工作得很好(我想我没有使用太多花哨的新东西),但要小心。

© www.soinside.com 2019 - 2024. All rights reserved.