0

У меня в папке Scripts папка «Lib» и папка «Приложение».Uglify или concat файл JavaScript conditionallly

Папка Lib содержит файлы библиотеки библиотеки 3-й части. Некоторые из них минимизируются без исходных источников, другие у нас есть исходные источники.

В папке App содержатся все наши собственные файлы JavaScript, все из которых не минимизированы.

Я новичок в Grunt, но у меня есть gruntfile, который делает следующее:

  • Uglifies всех файлы JS в папке Lib и производит уменьшенные версии с sourcemaps.
  • Углевает все файлы JS в папке «Приложение» и производит мини-версии с исходными картами.

Очевидная проблема: некоторые из файлов в папке Lib уменьшены, поэтому их повторное использование/создание исходных карт - плохая идея и может не работать по разным причинам.

Мое решение: Я запускаю Uglify только на .js-файлах в папке Lib в lib-unmin.min.js. Затем я объединяю все уже измененные файлы в файл lib-min.min.js, затем я объединяю оба этих файла вместе, чтобы получить lib.min.js.

Новая проблема Что делать, если я не могу Concat в уже уменьшенную сценарии к концу других minififed сценариев без этого нарушения?

У меня есть вопрос о зависимости вроде этого:

  • скриптов/Lib/a.js (требуется для б запустить)
  • скриптов/Библиотеку/b.min.js (требуется для запуска с до)
  • скрипты/Lib/c.js (требуется для сценариев App для запуска)

Если у меня есть массив этих файловых путей в моем gruntfile, в таком порядке, что самый простой способ uglifying/согласование всех файлов в один мини-JS-файл в том, что o чтобы убедиться, что мы не пытаемся минимизировать мини-файл?

Что делают другие разработчики в подобных ситуациях?

Спасибо!

ответ

1

Мне нравится конкатенировать файлы, а затем объединять их все вместе. Таким образом, uglify гарантирует, что дублирующие значения переменных не переопределяют друг друга, когда он сжимает имена переменных.

Вы можете связать столько файлов, сколько хотите в конкатемах. Сделайте разные группы concat для совместного использования и поддержания «первого, второго, третьего, ...» порядка:

module.exports = function(grunt) { 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    uglify: { 
     app: { 
     options: { 
      sourceMap: true, 
      sourceMapName: 'build/maps/map.map' 
     }, 
     files: { 
      'build/app.min.js': ['build/js/app-first-unmin.js', 'build/js/app-second-min.js', 'build/js/app-third-unmin.js'] 
     } 
     } 
    }, 

    concat: { 
     options: { 
     separator: ';' 
     }, 
     firstUnminified: { 
     src: [ 
      'lib/underscore.js' 
     ], 
     dest: 'build/js/app-first-unmin.js' 
     }, 
     secondMinified: { 
     src: [ 
      'lib/moment.min.js' 
     ], 
     dest: 'build/js/app-second-min.js' 
     }, 
     thirdUnminified: { 
     src: [ 
      'lib/favico.js' 
     ], 
     dest: 'build/js/app-third-unmin.js' 
     } 
    }, 
    }); 

    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-contrib-concat'); 

    grunt.registerTask('default', ['concat:firstUnminified', 'concat:secondMinified', 'concat:thirdUnminified','uglify']); 
}; 
+0

Спасибо, это было именно то, что я искал! –

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

  • Нет связанных вопросов^_^