2012-11-14 37 views
1

我有一个独特的目录结构,我需要帮助为其构建脚本。
这里是link(略有不同)或目录结构:我如何使用Node来定制这个构建脚本?

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

夫妇的事情,我需要:

  • 编译CoffeeScript的一个手表的任务转化为服务器DIST + 客户DIST
  • 将所有其他文件复制到它们的嵌套文件夹中,最好还带有手表任务

问题:

  • 如果我只是编译CoffeeScript的,它只是在.coffee文件 复制到.js文件到他们的嵌套目录但留下的CSS/ IMGS /等装载require.js。我需要一种方法将 纳入-dist目录
  • /client文件夹中的Main.coffee是require.config,可以与requirejs grunt构建工具一起使用来优化事物。

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

+0

怎么样的Makefile? – dmck

+0

不反对 - 以前从未做过。由于有很多现成的任务可供使用,我通常会用咕噜声来构建......你能提供一些指导吗?我应该运行的任务? etc. – imrane

+0

你能更具体吗?有grunt-contrib-copy任务来复制静态资源和grunt-contrib-requirejs来执行requirejs优化。 grunt-contrib插件的完整列表:https://github.com/gruntjs/grunt-contrib –

回答

1

我结束了使用咕噜 - 完成以下任务:

  • 干净:清除服务器/客户端建立目录
  • 手表:显示器.coffee文件和两个生成目录
  • 复制:复制客户端/服务器文件以创建目录,忽略由咖啡任务管理的.coffee文件
  • 咖啡:编译.coffee文件的.js将它们移动到构建目录

这是在当前迭代繁重的文件:

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'); 
相关问题