javascript - make 构建/最小化已更改的 JS 文件

标签 javascript makefile

我正在尝试学习 Make 并将 Makefile 构建到我的应用程序中,以帮助我构建和最小化我的 .js 文件,以便稍后使用组合加载器服务器应用程序。

我想要完成的是,当我运行 make 时,它​​只会将自上次运行以来更改过的 .js 文件复制到构建目录,然后缩小该文件并生成 -min。 js副本。最后,我需要始终确保生成一个新的 meta.js 文件。

我在下面粘贴了我的工作,问题在于它不是只选择更改的 .js 文件,而是选择每次运行时的每个文件。在这种情况下,我遗漏了如何让 Make 仅选择已更改文件的内容。

BOOKIE_JS = bookie/static/js/bookie
JS_BUILD_PATH = bookie/static/js/build
JS_META_SCRIPT = scripts/js/generate_meta.py

jsbuild: $(JS_BUILD_PATH)/bookie/meta.js

clean_js:
    rm -rf $(JS_BUILD_PATH)/*

$(JS_BUILD_PATH)/bookie/meta.js: $(BOOKIE_JS)/y*-min.js
    $(JS_META_SCRIPT) -n YUI_MODULES -s $(BOOKIE_JS)/y* -o $(JS_BUILD_PATH)/bookie/meta.js

$(BOOKIE_JS)/y*-min.js: $(BOOKIE_JS)/y*.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

    # this is the part that runs for each .js file and I'd like it to only run for the *modified* files
$(BOOKIE_JS)/y*.js: $(JS_BUILD_PATH)/bookie
    cp $@ $(JS_BUILD_PATH)/bookie/

$(JS_BUILD_PATH)/bookie:
    mkdir $(JS_BUILD_PATH)/bookie

clean: clean_js

.PHONE: clean clean_js

当前输出:

cp bookie/static/js/bookie/yapi.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/ymodel.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/ytagcontrol.js bookie/static/js/build/bookie/
cp bookie/static/js/bookie/yview.js bookie/static/js/build/bookie/
scripts/js/jsmin_all.py bookie/static/js/build/bookie
scripts/js/generate_meta.py -n YUI_MODULES -s bookie/static/js/bookie/y* -o bookie/static/js/build/bookie/meta.js

我只想查看已更改文件的 cp。

最佳答案

我想你打算做一个 pattern rule但使用了错误的语法。例如,这个:

$(BOOKIE_JS)/y*-min.js: $(BOOKIE_JS)/y*.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

表示每个 $(BOOKIE_JS)/y*-min.js 文件都依赖于 $(BOOKIE_JS)/y*.js 文件——所有他们,而不仅仅是名字相似的那个。如果你这样做:

$(BOOKIE_JS)/y%-min.js: $(BOOKIE_JS)/y%.js
    scripts/js/jsmin_all.py $(JS_BUILD_PATH)/bookie

然后 % 必须在每一边用相同的字符串替换,所以例如 $(BOOKIE_JS)/yapi-min.js 只依赖于 $(BOOKIE_JS)/yapi.js

关于javascript - make 构建/最小化已更改的 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009829/

相关文章:

gcc - 提供给 ./configure 的 `ac_cv_func_malloc_0_nonnull` 是什么?

c++ - 将使用 CMake 的大型 C++ 项目编译为 WebAssembly

c - Makefile目标文件生成、变量替换等问题

使用 mkl 和 GNU C/C++ 编译时 cc1plus : error: argument to '-O' should be a non-negative integer, 'g' 、 's' 或 'fast' 错误

javascript - xss - 绑定(bind)事件

javascript - python scrapy - 从 onclick 弹出对话框中抓取

javascript - Visual Studio 编译器 'syntax error' 关于 javascript 的警告

javascript - 如何将参数传递给图像加载事件?

javascript - 将数据从 Controller 传递到 JavaScript

makefile - 如何在Makefile中将模式规则依赖项设为可选?