Build Makefile:如何提取、替换和放入新文件? 更新

Build Makefile:如何提取、替换和放入新文件? 更新,build,makefile,Build,Makefile,最后,我提出了一个亮丽的构建Makefile。如果你想看一下这个要点- 要连接一些文件,我可以执行以下操作: # JS files JS_TARGETS = wrapper.js \ file1.js \ file2.js combine-js: @cat $(JS_TARGETS) > file-combined.js 但那不是我想要/需要的。我的wrapper.js类似于: (功能(Foo、win、doc){ "严格使用

最后,我提出了一个亮丽的构建Makefile。如果你想看一下这个要点-


要连接一些文件,我可以执行以下操作:

# JS files
JS_TARGETS = wrapper.js \
             file1.js \
             file2.js

combine-js:
    @cat $(JS_TARGETS) > file-combined.js
但那不是我想要/需要的。我的
wrapper.js
类似于:

(功能(Foo、win、doc){
"严格使用",;
/*{要替换的代码}*/
})(window.Foo=window.Foo |{},窗口,文档);

因此,我需要将其他文件放入
wrapper.js
中。之后,我将运行
jshint
uglify
,但这是另一个问题。

最简单的方法是将
wrapper.js
拆分为两部分-头和尾-然后按严格顺序连接,例如:

cat wrapper_head.js file1.js file2.js wrapper_tail.js > file-combined.js

这应该可以做到-它使用
perl
但是:

JS_WRAPPED_SOURCES = file1.js file2.js
JS_WRAPPER = wrapper.js
JS_SOURCES = $(JS_WRAPPER) $(JS_WRAPPED_SOURCES)

combined.js: $(JS_SOURCES)
        cat $< | perl -e '$$c=join("\n",<>); $$c =~ s/{CODE_TO_BE_REPLACED}/`cat $(JS_WRAPPED_SOURCES)`/e; print $$c' \
         > $@
JS\u WRAPPED\u SOURCES=file1.JS file2.JS
JS_WRAPPER=WRAPPER.JS
JS_源=$(JS_包装)$(JS_包装的_源)
combined.js:$(js_来源)
cat$<| perl-e'$$c=join(“\n”,)$$c=~s/{CODE_TO___替换}/`cat$(JS_包装的_源代码)`/e;打印$$c'\
> $@
由于您正在运行
jshint
uglify
我猜您正在使用
Grunt

在这种情况下,我建议您使用像。

这样的Grunt任务。实际上,这是最简单的解决方案,谢谢。稍后我会投票,因为我已经达到了每日上限。非常感谢,很好,很干净,但我选择@keltar's是因为简单。稍后我会投票,我已经达到每日限额了。不客气!是的,如果可能的话,保持简单!