javascript - 如何引用 Grunt 文件中的某个部分以避免冗余?

标签 javascript gruntjs

这看起来像是 gruntgrunt-contrib-copy 特定问题,但它实际上适用于更通用的范围。

冗余配置

我有以下 Gruntfile.js:

module.exports = function(grunt) {
  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
   
    copy: {
      examples: {
        cli: {
          files: [
            { src: ['src/client.js'], dest: 'examples/client.js' }
          ]
        },
        srv: {
          files: [
            { src: ['src/server.js'], dest: 'examples/server.js' }
          ]
        },
        all: { /* ATTENTION: Redundant part! */
          files: [
            { src: ['src/client.js'], dest: 'examples/client.js' },
            { src: ['src/server.js'], dest: 'examples/server.js' }
          ]
        }
      },
    },
  });

  grunt.loadNpmTasks('grunt-contrib-copy');

  grunt.registerTask('default', [...]);
  grunt.registerTask('build-examples', ['copy:examples']);
};

但这是多余的!

试图避免冗余

我想做这样的事情:

all: {
  files: examples.cli.files.concat(examples.srv.files)
}

但这是不可能的。

此处的最佳做法是什么?谢谢

最佳答案

请记住这是 JavaScript 代码,因此您可以在 JavaScript 代码中执行任何操作:

module.exports = function(grunt) {
  // Project configuration.
  var clientFiles = [
    { src: ['src/client.js'], dest: 'examples/client.js' }
  ];
  var serverFiles = [
    { src: ['src/server.js'], dest: 'examples/server.js' }
  ];
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    copy: {
      examples: {
        cli: {
          files: clientFiles
        },
        srv: {
          files: serverFiles
        },
        all: {
          files: clientFiles.concat(serverFiles)
        }
      },
    },
  });

  grunt.loadNpmTasks('grunt-contrib-copy');

  grunt.registerTask('default', [...]);
  grunt.registerTask('build-examples', ['copy:examples']);
};

关于javascript - 如何引用 Grunt 文件中的某个部分以避免冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500699/

相关文章:

javascript - 将 js/html/css 应用重构为 React

css - 加载 gruntfile.js 任务时如何修复 'SyntaxError: Unexpected identifier Warning: Task "sass“未找到”?

gruntjs - grunt-useref 和 grunt-usemin 之间的区别?

javascript - Grunt 将缩进转换为空格

javascript - 使用正则表达式从字符串数量中删除千位分隔符的最佳方法

javascript - 多个链接的 dc.js 图表的 d3-tooltips

gruntjs - 全局 grunt 任务错误处理

css - 少提示@brand-success 是未定义的,即使它在 variables.less

javascript - 将 div 附加到 body 并将脚本附加到 div

javascript - FastAPI - 使用 Axios 上传多个文件会引发错误请求错误