2015-04-19 1 views
2

J'ai un vrai problème maintenant, Quand je suis en production et quand jamais je mets à jour mon CSS ou JS le même fichier continue à servir à partir du serveur .. Je J'ai besoin d'obtenir les nouvelles mises à jour, puis je dois rafraîchir le navigateur,Comment ajouter un horodatage de construction à la fin des fichiers minifiés

Je pense avoir un moyen d'ajouter une version de construction à la fin de mon nom de fichier minifié, Donc, quand jamais mes fichiers sont mis à jour et Grunt minifies mes fichiers, il affichera un lien parfait qui sera nouvellement téléchargé par le navigateur web

en ce moment, le lien est comme ce

<script src="/min/production.min.js"></script> 

J'ai besoin que ce soit,

(<script src="/min/production[timestamp].min.js"></script>) 

Répondre

2

Ce que je l'ai fait pour ce faire sont les suivantes

tâches/uglify.js

Remplacer la ligne suivante

dest:'.tmp/public/min/production.min.js' 

avec

dest: global.productionJSName 

tâches/voiles linker.js

Ajouter les variables suivantes à votre tâche

global.timestamp = global.timestamp || new Date().getTime(); 
global.productionJSName = '.tmp/public/min/production-' + global.timestamp + '.min.js'; 

module.exports = function(grunt) { 
    var productionJSName = global.productionJSName // Add this 
    ... 

Remplacer tout l'ancien chemin de productionJSName

... 
prodJs : { 
    ... 
    files: { 
      '.tmp/public/**/*.html': [productionJSName], 
      'views/**/*.html': [productionJSName], 
      'views/**/*.ejs': [productionJSName] 
     } 
} 
... 
prodJsRelative : { 
    ... 
    files: { 
      '.tmp/public/**/*.html': [productionJSName], 
      'views/**/*.html': [productionJSName], 
      'views/**/*.ejs': [productionJSName] 
     } 
} 
... 
prodJsJade : { 
    ... 
    files: { 
      'views/**/*.jade': [productionJSName] 
     } 
} 
... 
prodJsRelativeJade : { 
    ... 
    files: { 
      'views/**/*.jade': [productionJSName] 
     } 
} 

Je ne suis pas Bien sûr que c'est le meilleur moyen, faites le moi savoir si vous trouvez une meilleure solution.

+0

Bro, fonctionne très bien jusqu'à présent, pourriez-vous me dire comment vous avez appris cela? Avez-vous appris Grunt depuis le début? S'il vous plaît me conseiller à ce sujet. Cheers mate – Sahan

+0

Salut, je n'ai pas appris le grognement depuis le début, j'ai appris cela en traçant le code de Sails.js. Ce qui signifie que j'apprends ce que j'ai besoin d'utiliser. –

0

Je pense avoir trouvé les solutions les plus simples pour résoudre les problèmes d'actualisation statique. Par exemple, dans tâches/voiles-linker.js:

prodJs: { 
     options: { 
      startTag: '<!--SCRIPTS-->', 
      endTag: '<!--SCRIPTS END-->', 
      fileTmpl: '<script src="%s?v=<%- (new Date()).getTime() %>"></script>', 
      appRoot: '.tmp/public' 
     }, 
     files: { 
      '.tmp/public/**/*.html': ['.tmp/public/min/production.min.js'], 
      'views/**/*.html': ['.tmp/public/min/production.min.js'], 
      'views/**/*.ejs': ['.tmp/public/min/production.min.js'] 
     } 
    }, 

Donc, vous devez ajouter juste une injection de modèle avec horodatage (<%- (new Date()).getTime() %>).