Итак, в моем проекте мой javascript состоит из
- Сторонние библиотеки (jquery, bootstrap, плагины jquery и т. д.)
- Пользовательские библиотеки
- Код, встроенный в html в файлах представления между
<script>$(function(){});</script>
Довольно стандартные вещи.
Моя цель состояла в том, чтобы найти надежный автоматизированный способ минимизировать все мои отдельные файлы javascript (около 25 файлов) в один файл для производства.
Я установил bower
, и мне кажется, это хороший способ обновлять мои внешние библиотеки. Я также установил grunt
. Я использую плагин Bower в grunt, который копирует все загруженные файлы в указанный каталог, затем concat
может просматривать этот каталог, чтобы объединить их, и, наконец, uglifyJS
минимизирует файл. Опять же, это похоже на стандартную настройку ворчания.
Плагин Bower создаст папку, например
vendorjs
- bootstrap.js
- jquery.js
- etc
Затем concat
будет читать из этого каталога, и, поскольку файлы расположены в алфавитном порядке, объединит их в неправильном порядке, загрузится перед jquery, поэтому он не будет использоваться.
Я знаю о RequireJS, но это кажется излишним для моих нужд. И мне также кажется, что мне нужно переписать все мои js, чтобы они соответствовали требованиям RequireJS.
Есть ли какая-то конфигурация, которую мне не хватает, которая поможет решить мою проблему? Я иду об этом в неправильном пути?
Редактировать это мой Gruntfile.js для большей ясности.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
bower: {
dev: {
dest: 'vendorjs',
options: {
stripJsAffix: true
}
}
}
concat: {
options: {
separator: ';'
},
dist: {
src: ['vendorjs/*.js'],
dest: 'vendor.js'
}
},
uglify: {
dist: {
files: {
'../../public/js/admin/vendor.min.js': ['vendor.js']
}
}
}
});
};