我怎样才能使用Node来定制这个构build脚本?

我有一个独特的目录结构,我需要帮助build立脚本。
这里是链接 (略有不同)或目录结构:

client /extensions /sandbox /widgets /form /collections /models /views /styles custom.css /controllers main.coffee server /views /layouts /errors app.coffee config.coffee 

几件我需要的东西:

  • 将一个监视任务的coffeescript编译成一个server-dist + client-dist
  • 将所有其他文件复制到它们的嵌套文件夹中,最好还有一个监视任务

问题:

  • 如果我只编译coffeescript,它只是将.coffee文件复制到.js到它们的嵌套目录中,但是会留下使用require.js加载的.css / imgs / etc。 我需要一种将它们引入到-dist目录的方法
  • / client文件夹中的Main.coffee是一个require.config,可以与requirejs grunt构build工具一起使用来优化事物。

无论如何,最简单的解决scheme是我正在寻找。

我结束了使用咕噜 – 与以下任务:

  • 清除 :清除服务器/客户端构build目录
  • 监视 :监视.coffee文件并同时build立目录
  • 复制 :复制客户端/服务器文件以创build目录,忽略咖啡任务pipe理的.coffee文件
  • 咖啡 :将.coffee文件编译为.js,将它们移动到构build目录

这是当前迭代中的grunt文件:

 grunt.initConfig({ clean: { build: ['client-dist', 'server-dist'], release: [] }, watch: { coffee: { files: ['client/**/*.coffee', 'server/**/*.coffee'], tasks: 'coffee reload' }, reload: { files: ['client/**/*.!(coffee)', 'server/**/*.!(coffee)'], tasks: 'copy reload' } }, copy: { client: { files: { "client-dist/": "client/**/*.!(coffee)" }, options: { basePath: "client" } }, server: { files: { "server-dist/": "server/**/*.!(coffee)" }, options: { basePath: "server" } } }, coffee: { compile: { files: { 'server-dist/*.js': 'server/**/*.coffee', 'client-dist/*.js': 'client/**/*.coffee' } } } }); grunt.loadNpmTasks('grunt-contrib'); grunt.loadNpmTasks('grunt-reload'); grunt.registerTask('default', ''); grunt.registerTask('build', 'clean:build copy coffee watch');