Nota: Esta pregunta solo es relevante para Grunt 0.3.xy se ha dejado como referencia. Para obtener ayuda con la última versión de Grunt 1.x, consulte mi comentario debajo de esta pregunta.
Actualmente estoy tratando de usar Grunt.js para configurar un proceso de compilación automático para primero concatenar y luego minificar archivos CSS y JavaScript.
He podido concatenar y minificar con éxito mis archivos JavaScript, aunque cada vez que ejecuto gruñido parece que se anexa al archivo en lugar de sobrescribirlos.
En cuanto a la minificación o incluso la concatenación de CSS, ¡todavía no he podido hacer esto!
En términos de módulos CSS ronco He intentado usar consolidate-css
, grunt-css
y cssmin
pero fue en vano. ¡No podía entender cómo usarlos!
Mi estructura de directorio es la siguiente (siendo una aplicación típica de node.js):
- app.js
- grunt.js
- /public/index.html
- / public / css / [varios archivos css]
- / public / js / [varios archivos javascript]
Así es como se ve actualmente mi archivo grunt.js en la carpeta raíz de mi aplicación:
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');
};
Entonces, solo para resumir, necesito ayuda con dos preguntas:
- Cómo concatenar y minificar todos mis archivos CSS en la carpeta
/public/css/
en un solo archivo, digamosmain.min.css
- ¿Por qué grunt.js sigue agregando a los archivos javascript concatenados y minificados
concat.js
yconcat.min.js
debajo en/public/js/
lugar de sobrescribirlos cada vez quegrunt
se ejecuta el comando ?
Actualizado el 5 de julio de 2016 - Actualización de Grunt 0.3.xa Grunt 0.4.xo 1.x
Grunt.js
se ha movido a una nueva estructura en Grunt 0.4.x
(el archivo ahora se llama Gruntfile.js
). Consulte mi proyecto de código abierto Grunt.js Skeleton para obtener ayuda con la configuración de un proceso de compilación para Grunt 1.x
.
Pasar de Grunt 0.4.x
a Grunt 1.x
no debería introducir muchos cambios importantes .
fuente
concat
en la mismajs
carpeta, lo recogería y lo agregaría! ¡Empecé a usar cssmin y funciona muy bien! Gracias de nuevo.concat.min.css
yconcat.min.js
. Si modifico algo, lo vuelvo a ejecutar y lo implemento, la gente no obtendrá la versión más reciente porque el navegador ya la almacenó en caché. ¿Hay alguna forma de nombrar aleatoriamente el archivo y vincularlos de acuerdo con las etiquetas<link>
y adecuadas<script>
?concat.min-<%= pkg.version %>.js
.dest
asícssmin: { css:{ src: '<%= concat.css.dest %>', dest: './css/all.min.css'
}} `Es el resultado de la operaciónconcat -> css
Quiero mencionar aquí una técnica muy, MUY interesante que se está utilizando en grandes proyectos como jQuery y Modernizr para concatenar cosas.
Ambos proyectos están completamente desarrollados con módulos requirejs (puedes ver eso en sus repositorios de github) y luego usan el optimizador requirejs como un concatenador muy inteligente. Lo interesante es que, como puede ver, ni jQuery ni Modernizr necesitan en requirejs para funcionar, y esto sucede porque borran el ritual sintético de requirejs para poder deshacerse de requirejs en su código. ¡Así que terminan con una biblioteca independiente que se desarrolló con módulos requirejs! Gracias a esto, pueden realizar compilaciones de sus bibliotecas, entre otras ventajas.
Para todos aquellos interesados en la concatenación con el optimizador requirejs, consulte esta publicación
También hay una pequeña herramienta que abstrae todo el texto estándar del proceso: AlbanilJS
fuente
Estoy de acuerdo con la respuesta anterior. Pero aquí hay otra forma de compresión CSS.
Puede configurar su CSS usando el compresor YUI :
fuente
No necesita agregar el paquete concat, puede hacerlo a través de cssmin de esta manera:
Y para js, use uglify así:
fuente
Creo que puede ser más automático, use la tarea gruñona y se encargue de hacer todos estos trabajos por usted, solo necesita alguna configuración:
https://stackoverflow.com/a/33481683/1897196
fuente