如何使用Node自定义此构建脚本?

时间:2012-11-14 18:59:36

标签: javascript node.js backbone.js coffeescript gruntjs

我有一个独特的目录结构,我需要帮助制作一个构建脚本 这是link(略有不同)或目录结构:

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到他们的嵌套目录但留下了.css / 用require.js加载的imgs / etc。我需要一种方法来带它们 进入 -dist 目录
  • / client文件夹中的Main.coffee是一个require.config,可以与requirejs grunt构建工具一起使用来优化。

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

1 个答案:

答案 0 :(得分:1)

我最终使用了grunt - 执行以下任务:

  • clean :清除服务器/客户端构建目录
  • 观看:监控.coffee文件和两个构建目录
  • 复制:复制客户端/服务器文件以构建目录,忽略由咖啡任务管理的.coffee文件
  • 咖啡:将.coffee文件编译为.js将其移至构建目录

这是当前迭代中的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');