Javascript Makefile组合js文件并生成压缩版本

Javascript Makefile组合js文件并生成压缩版本,javascript,build,makefile,compression,Javascript,Build,Makefile,Compression,我正在尝试编写一个基本的makefile,它将多个js文件组合成一个单独的文件,然后执行相同的操作,但对它们进行压缩 到目前为止,我有这个可以使压缩版本的罚款 # Set the source directory srcdir = src/ # Create the list of modules modules = ${srcdir}core.js\ ${srcdir}sizzle.js\ ${srcdir}json2.js\

我正在尝试编写一个基本的makefile,它将多个js文件组合成一个单独的文件,然后执行相同的操作,但对它们进行压缩

到目前为止,我有这个可以使压缩版本的罚款

# Set the source directory
srcdir = src/

# Create the list of modules
modules =   ${srcdir}core.js\
            ${srcdir}sizzle.js\
            ${srcdir}json2.js\
            ${srcdir}ajax.js\
            ${srcdir}attribute.js\
            ${srcdir}content.js\
            ${srcdir}cookie.js\
            ${srcdir}css.js\
            ${srcdir}event.js\
            ${srcdir}json.js\
            ${srcdir}location.js\
            ${srcdir}opacity.js\
            ${srcdir}ready.js\
            ${srcdir}size.js\
            ${srcdir}init.js

# Compress all of the modules into spark.js
spark.js: ${modules}
    java -jar yuicompressor.jar -o $@ $^
有人知道我将如何添加一个名为spark-dev.js的未压缩版本吗?我一直在试着使用cat,但没能走多远。这是我写的第一个makefile

编辑 我用cat试过这个代码

spark-dev.js: ${modules}
    cat $@ $^
你就快到了:-)这应该行得通:

spark-dev.js: ${modules}
    cat > $@ $^

背景:
cat
的功能是(尝试)打开其命令行上列出的所有文件,并将内容转储到stdout。shell将
$@
语法理解为“创建文件
$@
,并将此命令的stdout连接到它”,因此现在我们将
$^
的内容组合到
$@

中,具体来说,您是如何尝试使用cat的?出了什么问题?@slowdog我已经把我试过的代码放在编辑中了。@slowdog哦,至于出了什么问题,它回显了所有文件的内容,然后打印:“make:**[spark-dev.js]Error 1”嗯,它停止了打印内容,但现在抛出了这个错误:“makefile:23:**缺少分隔符。”。使用
cat
命令,确保行的开头有制表符,而不是空格。将makefile片段复制到浏览器中或从浏览器中复制出来都是一件痛苦的事情,因为选项卡往往会神奇地变成空格……好吧,现在它可以工作了,但只执行第一个命令,有没有办法同时执行这两个命令?如果您将行
all:spark.js spark-dev.js
放在makefile顶部附近(在其他两条规则之前),默认情况下,
make
将生成两个输出文件。