Примечание: этот вопрос актуален только для Grunt 0.3.x и оставлен для справки. Если вам нужна помощь с последним выпуском Grunt 1.x, пожалуйста, прочтите мой комментарий под этим вопросом.
В настоящее время я пытаюсь использовать Grunt.js для настройки процесса автоматической сборки для первого объединения, а затем уменьшения файлов CSS и JavaScript.
Мне удалось успешно объединить и минимизировать мои файлы JavaScript, хотя каждый раз, когда я запускаю grunt, кажется, что он просто добавляется в файл, а не перезаписывает их.
Что касается минимизации или даже объединения CSS, я пока не могу этого сделать!
С точки зрения рубаки модулей CSS Я попытался с помощью consolidate-css
, grunt-css
и , cssmin
но безрезультатно. Я не мог понять, как их использовать!
Моя структура каталогов выглядит следующим образом (это типичное приложение node.js):
- app.js
- grunt.js
- /public/index.html
- / public / css / [различные файлы css]
- / public / js / [различные файлы javascript]
Вот как сейчас выглядит мой файл grunt.js в корневой папке моего приложения:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: '<json:package.json>',
concat: {
dist: {
src: 'public/js/*.js',
dest: 'public/js/concat.js'
}
},
min: {
dist: {
src: 'public/js/concat.js',
dest: 'public/js/concat.min.js'
}
},
jshint: {
options: {
curly: true,
eqeqeq: true,
immed: true,
latedef: true,
newcap: true,
noarg: true,
sub: true,
undef: true,
boss: true,
eqnull: true,
node: true
},
globals: {
exports: true,
module: false
}
},
uglify: {}
});
// Default task.
grunt.registerTask('default', 'concat min');
};
Итак, чтобы подвести итог, мне нужна помощь с двумя вопросами:
- Как объединить и минимизировать все мои файлы css в папке
/public/css/
в один файл, скажемmain.min.css
- Почему grunt.js продолжает добавляться к объединенным и минифицированным файлам javascript
concat.js
иconcat.min.js
ниже,/public/js/
а не перезаписывать их каждый раз приgrunt
запуске команды?
Обновлено 5 июля 2016 г. - Обновление Grunt 0.3.x до Grunt 0.4.x или 1.x
Grunt.js
переехал в новую структуру в Grunt 0.4.x
(теперь файл называется Gruntfile.js
). Обратитесь к моему проекту с открытым исходным кодом Grunt.js Skeleton за помощью в настройке процесса сборки для Grunt 1.x
.
Переход от Grunt 0.4.x
к Grunt 1.x
не должен вносить много серьезных изменений .
источник
concat
в ту жеjs
папку, она бы выскочила и добавила! Я начал использовать cssmin, и он отлично работает! Еще раз спасибо.concat.min.css
иconcat.min.js
. Если я что-то изменю, перезапущу и разверну, люди не получат самую последнюю версию, потому что браузер уже кэшировал ее. Там»каким - то образом случайно имя файла и связать их в соответствии с надлежащей<link>
и<script>
теги?concat.min-<%= pkg.version %>.js
.dest
такcssmin: { css:{ src: '<%= concat.css.dest %>', dest: './css/all.min.css'
}} `Это результат операцииconcat -> css
Я хочу упомянуть здесь очень, ОЧЕНЬ интересную технику, которая используется в огромных проектах, таких как jQuery и Modernizr, для объединения вещей.
Оба этих проекта полностью разработаны с использованием модулей requirejs (вы можете увидеть это в их репозиториях на github), а затем они используют оптимизатор requirejs как очень умный конкатенатор. Интересно то, что, как вы можете видеть, ни jQuery, ни Modernizr не нуждаются в requirejs для работы, и это происходит потому, что они стирают синтаксический ритуал requirejs, чтобы избавиться от requirejs в своем коде. Таким образом, у них получается отдельная библиотека, разработанная с помощью модулей requirejs! Благодаря этому они, помимо других преимуществ, могут выполнять сборку своих библиотек сокращенно.
Для всех, кто заинтересован в объединении с оптимизатором requirejs, ознакомьтесь с этим постом
Также есть небольшой инструмент, который абстрагирует все шаблоны процесса: AlbanilJS
источник
Я согласен с приведенным выше ответом. Но вот еще один способ сжатия CSS.
Вы можете объединить свой CSS с помощью компрессора YUI :
источник
Вам не нужно добавлять пакет concat, вы можете сделать это через cssmin следующим образом:
А для js используйте uglify следующим образом:
источник
Я думаю, что может быть более автоматическим, ворчливое задание usemin позаботится о том, чтобы сделать все это за вас, нужна только некоторая конфигурация:
https://stackoverflow.com/a/33481683/1897196
источник