2016-09-14 14 views
2

私はGruntをPHPで使用していますが、style.min.20160913230349.cssという日付スタンプで私のCSSをバージョンアップするにはパッケージを使用しています。グランツのCSSバージョン番号

しかし、私のPHPページのヘッダーに新しい文字列を更新するパッケージを見つけるにはどうすればよいですか? style.min.{grunt_this_string}.css

私はuseminを見ていますが、私はそれをどのように実装できるのか分かりません。

<link rel="stylesheet" media="all" href="/css/style.min.20160913230349.css" type="text/css"/> 

Gruntfile.js

module.exports = function (grunt) { 


    grunt.initConfig({ 


    /*============================================= 
    =   Proxy server     = 
    =============================================*/ 
    php: { 
     dist: { 
     options: { 
      hostname: 'sau.dev', 
      base: 'website-v2', // Project root 
      keepalive: false, 
      open: false 
     } 
     } 
    }, 

    browserSync: { 
     dev: { 
     bsFiles: { 
      src: [ 
      'website-v2/*.php', 
      'website-v2/*/*.php', 
      'website-v2/css/*.css' 
      ] 
     }, 
     options: { 
      proxy: 'sau.dev',//<%= php.dist.options.hostname %>:<%= php.dist.options.port %> 
       ghostMode: { 
        clicks: false, 
        forms: false, 
        scroll: true 
       }, 
       logLevel: 'info',//client 
       logConnections: true, 
       watchTask: true, 
       open: 'ui', 
       xip: true, 
     } 
     } 
    }, 

    watch: { 
     html: { 
      files: ['src/*.html'], 
     } 
    }, 

    cssmin: { 
     dist: { 
      files: { 
      'website-v2/css/style.min.css': ['website-v2/css/all.css'] 
      } 
     } 
    }, 

    uglify: { 
     dist: { 
     files: { 
      'website-v2/js/main.min.js': ['website-v2/js/jquery-  1.9.1.min.js','jquery-ui.min.js','main.js','featherlight.js'] 
     } 
     } 
    }, 

    assets_versioning: { 
     options: { 
     tag: 'date', 
     dateFormat: 'YYYYMMDDHH', 
     timezoneOffset: 10 
     }, 
     dist: { 
     options: { 
      tasks: ['cssmin:dist'] 
     } 
     }, 
    }, 

    }); 

    //grunt.loadNpmTasks('grunt-contrib-sass'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-browser-sync'); 
    grunt.loadNpmTasks('grunt-php'); 
    grunt.loadNpmTasks('grunt-assets-versioning'); 
    grunt.loadNpmTasks('grunt-contrib-cssmin'); 
    grunt.loadNpmTasks('grunt-string-replace'); 

    //grunt.loadNpmTasks('usemin'); 



    //Static Server 
    grunt.registerTask('dist', ['versioning']); 

    //Proxy Server 
    grunt.registerTask('server', ['php:dist','browserSync','watch']); 
}; 
+0

私は 'gruntfile.js'を私に提供できますか? – slorenzo

+0

あなたは 'files:{'website-v2/css/style.min.css':[website-v2/css/all.css ']}'と 'grunt.registerTask(' dist ' cssmin:dist '、' assets_versioning ']); '? https://www.npmjs.com/package/grunt-assets-versioning#versioning-using-a-date – slorenzo

+0

のように私はこれらを正しく使うことができますが、私はタグで自分のリンクを更新する必要があります。新しいファイルとパス名 – ottz0

答えて

1

した後、あなたの問題を理解し、私はあなたがgruntfile.jsでこれを追加する必要がassets.map

を作成する必要があると思います。

options: { 
    ... 
    versionsMapFile: 'assets.json', 
    ... 
} 

私はgrunt-assets-versioningのバージョンを作成すると信じたいです。

あなたのhtmlで、assest.jsonを提供するバージョンに置き換える必要があります。 これにはgrunt-string-replaceを使用することをおすすめします。

replace: { 
    dist: { 
    options: { 
     patterns: [ 
     { 
      match: 'style.min.css', 
      replacement: replacement() 
     } 
     ] 
    }, 
    files: [ 
     {src: ['src/assets/index.html'], dest: 'build/index.html'} 
    ] 
    } 
} 

... 

grunt.registerTask('versioning', ['assets_versioning']); 
grunt.registerTask('replace', ['string-replace'] 

... 

function replacements() { 
    var projectFile = "assets.json"; 

    if (!grunt.file.exists(projectFile)) { 
     grunt.log.error("file " + projectFile + " not found"); 
     return true;//return false to abort the execution 
    } 
    var project = grunt.file.readJSON(projectFile);//get file as json object 
    var version = project[0].version; 
    var replace = '' 

    // continue with the algorithm that you need 

    return replace; 
} 

私は役に立つと思います。

+0

私はあなたが正しい方向に私を入れたと思う – ottz0