2015-01-12 2 views
1

У меня есть файл пехотинца, который выполняет следующие задачи в порядке:Как обновить файл package.json после git pull в задаче grunt?

  • Pefrorm git pull команда (хрюкать-оболочка)
  • уродовать все JavaScript-файлы, определенные в package.json файл (пехотинец-уродовать)
  • Concatanate все обезображенный JavaScript файлы (пехотинец-CONCAT)

проблема здесь есть, иногда, натянул совершить, возможно, некоторые изменения в package.json. Grunt caches package.json в начале задач, так package.json не влияет на git pull, что означает, что grunt выполняет задачу по старому package.json файл.

Я ищу решение, которое обновляет кешированный файл package.json, поэтому я буду работать после git pull, как и ожидалось.

Edit: Вы можете найти весь процесс 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-файлы должны уклоняться от файла 'package.json'? – jakerella

+0

Привет, извините за поздний ответ. Я добавляю файл описания gruntfile и файл пакета в описание. –

ответ

4

Это то, что я не думаю, что вы можете сделать просто из Базовая конфигурация, я думаю, вам может понадобиться настраиваемая задача. Причина, по которой я говорю это, заключается в том, что вам нужно перечитать файл package.json, и нет способа сделать это в конфиге (что я знаю). Таким образом, вместо этого мы можем создать простую пользовательскую задачу, которая читает файл package.json между задачами 1 и 2. Я написал couple blog posts по адресу custom tasks, если вы хотите прочитать его больше.

Вот что я хотел бы сделать для пользовательской задачи:

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' ]); 

Очевидно, вам может понадобиться для настройки этих задач , Вы можете оставить начальное чтение файла package.json в своей конфигурации Gruntfile.js, его следует просто перезаписать заданием readpkg.

Смежные вопросы