在构建过程中集成js

时间:2009-07-17 14:30:05

标签: javascript

我想知道在构建过程中缩小和连接所有js脚本的最佳方法是什么。我有实际的缩小工作,但现在需要在我的html页面中设置一个缩小文件的引用。在开发版本中,它引用了五个连接起来的文件。我应该juts xkepoke或类似的东西吗?是否有更优雅的技术?

3 个答案:

答案 0 :(得分:3)

我通常使用的方法是将所有文件连接起来,使用yui缩小:

<target name="compress-js" unless="disable.js.compression">
    <java fork="true" spawn="true" jar="tools/yuicompressor-2.3.6/yuicompressor-2.3.6.jar">
      <arg value="-o" />
      <arg value="${js.home}/lib/lib.js" />
      <arg value="${js.home}/lib/lib.js" />
    </java>
  </target>

然后只有一个引用压缩文件的头,并在dev中使用disable.js.compression,这样你的文件就不会被压缩。

答案 1 :(得分:0)

在包含脚本文件的文件中,执行此操作(使用您使用的服务器端技术)

<%
if (@IS_DEV@){
%>
  <script src="file1"></script>
  ...
  <script src="file5"></script>    
<%
} else {
%>
  <script src="@MINIFIED_FILE_PATH@"></script>
<%
}
%>

然后在构建文件中使用“替换”ant目标(假设你使用ant)来替换@ IS_DEV @和@MINIFIED_FILE_PATH @

<replace file="yourfile.jsp" token="@IS_DEV@" value="${IS_DEV}"/>
<replace file="yourfile.jsp" token="@MINIFIED_FILE_PATH@" value="${YOUR_MINIFIED_FILE_PATH}"/>

答案 2 :(得分:0)

您可以使用Buildr

在项目的根目录中创建一个package.json文件,使其看起来像这样:

{
    "name": "My Project Name",
    "buildr": {
        "compress": {
            "js": true,
            "css": true,
            "img": false
        },
        "bundle":  {
            "js": true,
            "css": true
        },
        "directories": {
            "out": "./scripts/compressed",
            "src": "./scripts/uncompressed"
        },
        "files": {
            "js": true,
            "css": true,
            "img": false
        }
    }
}

然后运行:

buildr

上面将压缩并将./scripts/uncompressed目录中的所有css和js文件捆绑到./ scripts / compressed`目录。

更新:更正了GitHub上Buildr的URL。