2017-06-28 12 views

答えて

2

grunt-contrib-cssminは、内部的に clean-cssを使用し、任意のネイティブ( clean-css)オプションは 「に渡されますクリーンcss "

clean-css便宜のためにlevelsにグループを最適化します。

restructureRules: false, // should disable all removals 
skipProperties: []  // specify individual rules to skip 

これはそれを行う必要があります:ルールの除去を制御する2つのオプションがあり、両方ともレベル2の下に

cssmin: { 
    options: { 
    skipProperties: ['r'] 
    } 
} 


をクリーンCSS 4.2.0と起動」フラグメントを完全にスキップする「コメント」ブロックメソッドが利用可能になります:

/* clean-css ignore:start */ 
.testClass { 
    r: 4; 
    width: 3px; 
    margin-left: 18px !important; 
} 
/* clean-css ignore:end */ 

注:4.2はまだリリースされていません。テストのビットの後


は、上記のいずれもが、彼らは、ドキュメントによると、「すべきである」ものの、実際に、動いていないようにみえ。
私は(私は縮小のためのうなり声で使用するものである) grunt-postcss cssnanogrunt-contrib-cssminを交換されている唯一の選択肢:実際には

npm install grunt-postcss cssnano 
grunt.initConfig({ 
    postcss: { 
    processors: [ 
     require('cssnano')({ 
     // options here... 
     }) 
    ] 
    }, 
}); 

grunt.loadNpmTasks('grunt-postcss'); 
grunt.registerTask('postcss', ["postcss"]); 

、私はより多くのpostcssアドオンを使用しています。あなたがする必要があることを忘れないでください

grunt jack 

module.exports = function(grunt) { 
    grunt.initConfig({ 
     postcss: { 
      options: { 
       processors: [ 
        require('pixrem'), 
        require('autoprefixer')({browsers: ['> 0%']}), 
        require('postcss-flexboxfixer'), 
        require('cssnano')({ 
         autoprefixer:false, 
         zindex: false 
        }) 
       ] 
      }, 
      jack: { 
       files: [{ 
        expand:true, 
        flatten:true, 
        cwd: 'assets/', 
        src: ['scss/*.css', '!**/variables.css'], 
        dest:'assets/css/' 
       }] 
      } 
     }, 
     watch: { 
      styles: { 
       files: [ 
        'assets/scss/*.css' 
       ], 
       tasks:['postcss:jack'] 
      } 
     } 
    }); 
    grunt.loadNpmTasks('grunt-postcss'); 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.registerTask('default', ["watch:styles"]); 
    grunt.registerTask('jack', ["postcss:jack"]); 
}; 

私は意図的にのみpostcssプラグインを実行するタスクを登録:
はここautoprefixerpixrempostcss-flexboxcssnanoと実用的な例ですpostcssを使用して各アドオンをインストールします。上記の場合は、あなたが必要があるだろう:

npm install grunt-postcss cssnano pixrem autoprefixer postcss-flexboxfixer 

を...と、最も可能性の高い、あなたが持っているものは何でも合うようにfilesを変更したいと思います。

今回は、テストしました。 rプロパティは、それを縮小したファイルにします。

.testClass{r:20;width:3px;margin-left:18px!important} 
+0

これは動作しません。私はskipProperties:['r']を私のオプションで追加しようとしましたが、エラーは "test.cssで無効なプロパティ名 'r'が現れます:2:3。結果のファイルにはrプロパティが含まれていません。 –

+0

@Jack、私は別の解決策で私の答えを更新しました。それが何らかの目的であれば教えてください。 –

+0

ありがとうAndrei。私はこれをテストし、実際に期待どおりに動作します。あなたのお時間をいただきありがとうございます。この答えを考えてください。 –

2

あなたはオプションでfalseにリストラを設定することでこれを防ぐことができる必要があります:optionsに述べたように

options: { 
    restructuring: false 
}, 
+0

この回答はどちらも機能していないようです。プロパティはまだ表示されます。 –