Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gruntjs 运行不同的任务仅在一个文件中不同_Gruntjs - Fatal编程技术网

Gruntjs 运行不同的任务仅在一个文件中不同

Gruntjs 运行不同的任务仅在一个文件中不同,gruntjs,Gruntjs,我有一个复杂的.grunt文件,里面有很多东西。其中包括concat。它看起来是这样的 concat: { libraries : { src : [many files], dest: 'libraries.js' }, ... a lot of similar things, myCode : { src : [ 'config.js', // this is the main problem ...

我有一个复杂的
.grunt
文件,里面有很多东西。其中包括
concat
。它看起来是这样的

concat: {
  libraries : {
    src : [many files],
    dest: 'libraries.js'
  },
  ... a lot of similar things,
  myCode : {
    src : [
      'config.js',               // this is the main problem
      ... a lot of files
    ],
    dest: 'myCode.js'
  },
}
所以主要的问题是我有我的预生产环境和真实环境。我希望为它们中的每一个都包含不同的配置(比如
config\u dev.js
config\u prod.js

我目前处理它的方式是创建不同的
code\u
部分:

  myCode_prod : {
    src : [
      'config_prod.js',               // this is the main problem
      ... a lot of files
    ],
    dest: 'myCode.js'
  },
  myCode_dev : {
    src : [
      'config_dev.js',               // this is the main problem
      ... a lot of files
    ],
    dest: 'myCode.js'
  }
然后注册两个不同的任务:

grunt.registerTask('default', [
    // my other tasks
    'concat:libraries',
    'concat:otherthings',
    'concat:myCode_prod'
]);

它运行良好且正确,但问题是,
myCode\u dev
只在一个文件和许多其他文件中不同(比如20个文件,它们每周都在添加/更改)。问题是:有时我忘了包括/复制所有这些内容,问题就开始了

那么,有没有一种方法可以用不同的方式来做呢


p.S.我知道这个标题不好,但找不到更好的。所以请随意更改。

我认为您需要的是尽早将
dev
dist
分开。在这方面,我有一个类似的方法,可能会被证明是有用的。主要思想是注册两个任务并选择一个默认任务(您仍然需要查看包含
dev
dist
变体的任务-在本例中,要完全理解它,请查看
uglify
compass
):

最后一行表示当您自己运行命令
grunt
时,
dev
将默认运行。如果您想创建一个用于生产的构建,那么必须是特定的,比如:
grunt:dist

注意,这个项目是以grunt watch为中心的,我认为这是最好的工作流。
watch
任务如果配置巧妙,将仅在被监视的文件发生更改时解析/编译某些文件。这样,当只对
javascript
文件进行更改时,才不会编译/连接/缩小
CSS
文件,而只对
javascript
文件进行更改。这一切都在那个项目中,请随意探索。干杯

grunt.registerTask('default', [
    // my other tasks
    'concat:libraries',
    'concat:otherthings',
    'concat:myCode_dev'
]);
// Compile production files
grunt.registerTask('dist', [
    'jshint',
    'jasmine',
    'uglify:dist',
    'compass:dist'
]);

// Compile developer friendly environment
grunt.registerTask('dev', [
    'jshint',
    'jasmine',
    'uglify:dev',
    'compass:dev'
]);

// Default task(s).
grunt.registerTask('default', 'dev');