Grunt: Regarder plusieurs fichiers, de Compiler seulement Changé
Je suis nouveau Grognement, et jusqu'à présent je l'apprécie beaucoup.
Je veux Grunt pour compiler uniquement les fichiers modifiés lors de l'exécution de grunt watch
Dans mon Grunfile.le café j'ai actuellement (parties pertinentes).
Remarque: actif/javascript/app.café et assets/javascript/app.js sont des répertoires
coffee:
default:
expand: true
cwd: "assets/javascript/app.coffee"
src: ["*.coffee"]
dest: "assets/javascript/app.js"
ext: ".js"
uglify:
dev:
options:
beautify: true
compress: false
mangle: false
preserveComments: 'all'
files:
"js/app.js": "assets/javascript/app.js/*.js"
"js/libs.js": "assets/javascript/libs/*.js"
watch:
coffeescript:
files: 'assets/javascript/**/*.coffee'
tasks: ["coffee"]
javascript:
files: "assets/**/*.js"
tasks: ["uglify:dev"]
livereload:
files: ["Gruntfile.coffee", "js/*.js", "*.php", "css/*.css", "images/**/*.{png,jpg,jpeg,gif,webp,svg}", "js/*.js", ]
options:
livereload: true
Il y a probablement un moyen plus court, mais je suis de la compilation de l'application.café de app.js tout d'abord, de sorte qu'après je distribue mon travail, les gens qui ne sont pas à l'aise avec Coffeescript pouvez parcourir le code à peu près de manière raisonnable.
Le problème avec tout ça c'est que maintenant que j'ai enregistrer un Coffeescript fichier, je reçois trop d'étapes ( je pense ):
>> File "assets/javascript/app.coffee/browse.coffee" changed.
Running "coffee:default" (coffee) task
File assets/javascript/app.js/browse.js created.
File assets/javascript/app.js/filters.js created.
Done, without errors.
Completed in 0.837s at Tue May 28 2013 12:30:18 GMT+0300 (EEST) - Waiting...
OK
>> File "assets/javascript/app.js/browse.js" changed.
>> File "assets/javascript/app.js/filters.js" changed.
Running "uglify:dev" (uglify) task
File "js/app.js" created.
File "js/libs.js" created.
Done, without errors.
Completed in 0.831s at Tue May 28 2013 12:30:19 GMT+0300 (EEST) - Waiting...
OK
>> File "js/app.js" changed.
>> File "js/libs.js" changed.
Completed in 0.000s at Tue May 28 2013 12:30:19 GMT+0300 (EEST) - Waiting...
Actuellement, je suis un peu mise en place de mon projet, mais je vais avoir beaucoup plus de fichiers Coffeescript, et je ne veux pas Coffeescript de recompiler tous les fichiers, à chaque changement de fichier.
En outre, libs.js a pas, dans tout cela, mais je suppose que c'est encore compilé, car il correspond aussi à la "actifs/*/.js" modèle.
Est-il un moyen de faire Grunt compiler uniquement les fichiers qui ont changé ?
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé une vraie solution! Et c'est super simple aussi!
npm install grunt-newer --save-dev
Puis dans votre Gruntfile (après le chargement de la tâche grunt):
Et c'est tout! Le Génial grunt-la plus récente est génial!
"... that's exactly what I needed! I didn't even need to read any docs or instructions ..."
Un développeur expérimenté serait remarque, qui - même si elle directement fonctionne sans configuration supplémentaire - il a une bonne documentation. scnrSi vous concat tous .le café des sources en un seul .js fichiers, vous devrez recompiler à chaque fois si l'un de vos sources de changements. Diviser jusqu'à plusieurs .js fichiers et faire un libération tâche où vous ne concat ces .js fichiers. De cette façon, vous seulement besoin d'inclure un .fichier js.
Voir À l'aide de gruntjs, comment faire le suivi des modifications .le café des fichiers?
La
grunt.event.on
événement détecte les changements dans les fichiers, de la réception d'unaction
etfilepath
paramètre.Voici un non testé exemple basé sur un de mes gruntfiles. Dans ce cas, tous mes source coffeescript les dossiers sont conservés dans un répertoire appelé sources, et pour la prévisualisation, ils sont compilés et enregistré est identique à la structure de répertoire dans un répertoire appelé dev
Espère que ça aide.
EDIT: Probablement pas exactement ce que vous voulez, parce que sans doute vous voulez l'accès à l'intermédiaire des variables, des actions et ainsi de suite - mais vous pouvez utiliser grunt de simplement exécuter un shell café de commande. Le
grunt-shell
mnp tâche ne présente, par exempleEDIT2: j'ai été confronté à des problèmes récurrents de
grunt.watch.on
ne fonctionne pas de manière cohérente dans grunt 0.4.1 sur OSX 10.8 et MacVim 7.3; pour quelque raison que ce soit, il s'arrête de regarder. J'ai repris juste à l'aide de la base grunt initConfig objet, mais avec beaucoup plus de précision, de sorte qu'il seulement les montres et les compile relativement petits groupes de fichiers, plutôt que l'ensemble du lot. Cela ralentit le temps de construction considérablement, mais il est beaucoup plus robuste. Votre kilométrage peut très.J'ai tombé sur ce, trop et ne trouve pas toutes les versions de travail qui a travaillé avec la version actuelle (0.4.1), Mais Jof Arnolds réponse a montré une bonne approche.
C'est ce que je suis venu avec:
J'ai un café, une section qui ressemble un peu à ceci: