在Makefile任务期间复制.js并编译.coffee

Copy .js and compile .coffee during Makefile task

本文关键字:js 编译 coffee 复制 Makefile 任务      更新时间:2023-09-26

我有一个节点项目:

  • src中的.coffeescript
  • 编译coffeescript输出到lib
  • bin中的shell脚本

如何调整我的Makefile,如下所示,将src中的.js文件也复制到lib目录?

BIN = ./node_modules/.bin
SRC = $(wildcard src/*.coffee)
LIB = $(SRC:src/%.coffee=lib/%.js)
init:
    npm install
clean:
    @rm -r -f $(LIB)
build: $(LIB)
dist: clean init build
lib/%.js: src/%.coffee
    $(call coffeetime)
define coffeetime
    @mkdir -p $(@D)
    $(BIN)/coffee -bcp $< > $@
endef

此外,如果您有任何其他改进Makefile的建议,请分享。

这样的东西可能会起作用。

  • 添加SRCJS = $(wildcard src/*.js)
  • LIB = $(SRC:src/%.coffee=lib/%.js)更改为LIB = $(SRC:src/%.coffee=lib/%.js) $(SRCJS:src/%=lib/%)
  • 添加:

    lib/%.js: src/%.js
        @cp $< $@
    

如果它不起作用(出于某种原因),那么您可能需要使用静态模式规则,但我认为类似上面的规则应该起作用。

我建议您改用Grunt。有一些巧妙的任务可以很好地处理Coffeescapet的编译。喜欢:https://github.com/gruntjs/grunt-contrib-coffee

此外,根据您的需要,Node.js可以在需要时直接处理Coffeescapet。