2015-01-12 18 views
1

我有一个咕噜文件,该文件执行以下任务,以便:git在grunt任务中拉取后如何刷新package.json文件?

  • Pefrorm一个git pull命令(咕噜壳)
  • 丑化所有的package.json文件中定义的JavaScript文件(咕噜,丑化)
  • Concatanate所有变丑JavaScript文件(咕噜-CONCAT)

这里的问题是,有时,拉承诺可能在一些变化package.json。咕噜缓存的package.json在这样的package.json不受git pull任务的开始,这意味着咕噜根据老的package.json文件执行任务。

我正在寻找一个解决方案,刷新缓存package.json文件,所以我会按预期运行后git拉。

编辑:您可以发现整个过程here

这里是我读包JSON文件片段:

uglify: { 
    options: { 
     report: 'gzip', 
     compress: true, 
     banner: '<%= banner %>', 
    }, 
    mangle: { 
     toplevel: false 
    }, 
    squeeze: { 
     dead_code: false 
    }, 
    codegen: { 
     quote_keys: true 
    }, 
    dist: { 
     files: { 
      '<%= pkg.dirs.js.dist.min %>': '<%= pkg.dirs.js.dist.src %>' 
     } 
    } 
} 

concat: { 
    js: { 
     options: { 
      banner: '<%= banner %>', 
      stripBanners: true, 
      separator: ';\n' 
     }, 
     src: '<%= pkg.dirs.js.dev %>', 
     dest: '<%= pkg.dirs.js.dist.src %>' 
    }, 
    css: { 
     options: { 
      banner: '<%= banner %>', 
      stripBanners: true, 
      separator: ' \n' 
     }, 
     src: '<%= pkg.dirs.css.dev %>', 
     dest: '<%= pkg.dirs.css.dist.src %>' 
    } 
} 
+0

你如何确定什么JS文件uglify从'package.json'文件? – jakerella

+0

嗨,对不起,迟到的回应。我将gruntfile和包文件添加到描述中。 –

回答

4

这事我不认为你可以简单地做基本配置,我想你可能需要一个自定义任务。我这样说的原因是你必须以某种方式重新读取package.json文件,并且在配置中没有办法做到这一点(我知道)。因此,我们可以创建一个简单的自定义任务,在任务1和2之间读取package.json文件。如果您想更多地阅读它,我在custom tasks上写了一个couple blog posts

这就是我将自定义任务做:

grunt.registerMultiTask('readpkg', 'Read in the package.json file', function() { 

    grunt.config.set('pkg', grunt.file.readJSON('./package.json')); 

}); 

然后,我们需要设置我们的多任务适合你的设置:

grunt.registerMultiTask('build', [ 'shell', 'readpkg', 'uglify:dist', 'concat:js' ]); 

显然,你可能需要调整这些任务。您可以在Gruntfile.js配置文件中保留package.json文件的初始读数,它应该仅由readpkg任务覆盖。

相关问题