serve instalar grunt example contrib cli clean gruntjs bower grunt-contrib-uglify

gruntjs - instalar - npm grunt



Grunt-newer con Grunt-uglify y Bower (1)

Tengo un proyecto usando Grunt y Bower. Grunt-uglify concatenará / miniaturizará los archivos del directorio Bower a la carpeta deploy/scripts.js . Estoy usando Grunt- deploy/scripts.js por lo que solo actualizará deploy/scripts.js si se agregan o cambian nuevos archivos. Todo funciona bien ... excepto ...

Cuando agrego una nueva biblioteca con Bower, la fecha del archivo refleja cuándo se cargó el archivo en la biblioteca de Bower (o quién lo está alojando), no la fecha en que se creó en mi computadora. Por lo tanto, Grunt-newer considera que las nuevas bibliotecas de Bower son más antiguas que deploy/scripts.js y no actualiza el archivo.

Una solución engorrosa es abrir el nuevo archivo .js de la biblioteca y volver a guardarlo. Modifica las fechas del archivo y, por lo tanto, grunt- deploy/script.js archivo deploy/script.js . Sin embargo, la utilidad de Bower parece irrelevante con una solución tan incómoda.


Puede usar ganchos Bower para manipular el tiempo de modificación de los archivos. Esto es una especie de truco, pero puede lograr lo que estás buscando.
Tendrá que registrar un enlace postinstalación y pasar la lista de componentes actualizados como argumento. Cuando se invoca el script, el% se reemplazará por una lista de componentes separados por espacios que se instale o desinstale.
Los ganchos deben registrarse en el archivo .bowerrc :

{ "scripts": { "postinstall": "hook.sh %" } }

Luego necesitará un script que itere sobre los componentes y cambie el tiempo de modificación de los archivos.
Por ejemplo, un script de shell:

#!/bin/bash for var in "$@" do find "./bower_components/$var" -exec touch {} /; done

Aquí hay otro ejemplo de un script node.js para el mismo propósito:

var fs = require(''fs''); var path = require(''path'') var components = process.argv.slice(2) components.forEach(function (comp) { var comp_path = path.join(process.cwd(),"bower_components",comp); var files = fs.readdirSync(comp_path); files.forEach(function(file) { fs.utimesSync(path.join(comp_path, file), new Date(), new Date()); }); });