最后,我想出了一个闪亮的美丽构建Makefile。如果你想看看这个要点 - https://gist.github.com/jonataswalker/5961bfcc0f335f3b51ea。
连接我可以做的一些文件:
# JS files
JS_TARGETS = wrapper.js \
file1.js \
file2.js
combine-js:
@cat $(JS_TARGETS) > file-combined.js
但这不是我想要/需要的。我的wrapper.js
就像:
(function(Foo, win, doc){
'use strict';
/*{CODE_TO_BE_REPLACED}*/
})(window.Foo = window.Foo || {}, window, document);
所以我需要把我的其他文件放在wrapper.js
里面。之后我将运行jshint
和uglify
,但这是另一个问题。
答案 0 :(得分:1)
最简单的方法是将cat wrapper_head.js file1.js file2.js wrapper_tail.js > file-combined.js
分成两部分 - 头部和尾部 - 然后按严格顺序连接,例如:
resolvers += "Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases"
答案 1 :(得分:1)
这应该这样做 - 但它使用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' \
> $@
由于您正在运行jshint
和uglify
,我猜您正在使用Grunt
。
在这种情况下,我建议您使用像grunt-replace这样的Grunt任务。