【问题标题】:How can I customize this build script with Node?如何使用 Node 自定义此构建脚本?
【发布时间】:2012-11-03 08:11:14
【问题描述】:

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

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

我需要的几样东西:

  • 将带有 watch 任务的 coffeescript 编译到 server-dist + 客户分布
  • 将所有其他文件复制到其嵌套文件夹中,最好同时使用监视任务

问题:

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

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

【问题讨论】:

  • 不反对 - 以前从未做过。我通常用 grunt 构建,因为有很多现成的任务可用......你能提供一些指导吗?我应该运行的任务?等
  • 你能说得更具体点吗?有 grunt-contrib-copy 任务来复制静态资源和 grunt-contrib-requirejs 来做 requirejs 优化。 grunt-contrib 插件的完整列表:github.com/gruntjs/grunt-contrib
  • 是的,我应该用我想出的解决方案更新这个......很快就会这样做......我已经完成了咕噜声,复制 + 咖啡任务,两者都有一个监视过程。

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


【解决方案1】:

我最终使用 grunt - 完成了以下任务:

  • clean:清除服务器/客户端构建目录
  • watch:监控 .coffee 文件和两个构建目录
  • 复制:复制客户端/服务器文件以构建目录,忽略由咖啡任务管理的 .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');

【讨论】:

    猜你喜欢
    • 2019-03-04
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多