我怎样才能使用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');