1

多くの contrib-sass 機能を grunt で動作させることができません。1日前にうなり声に飛び込みましたが、本当に良いことがわかりました。

ソースマップが機能するはずの contrib-sass リポジトリへのリンク: https://github.com/gruntjs/grunt-contrib-sass/commit/e85ee70ccb8839867172b57ca1378293291f8037

注:私は sass のブリーディング エッジを持っています。この機能はsass --watch --scss --sourcemap --no-cache、Google クローム カナリア ソースマップと Sass スタイルシートのデバッグを使用すると正常に動作します。

ここに私のGruntfile.jsがあります:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd hh:mm:ss") %> */\n',

    concat: {
      options: {
        separator: '\n// New file\n',
        banner: '<%= banner %>'
      },
      develop: {
        files: [
          { src: ['js/develop/plugins.js', 'js/develop/main.js'], dest: 'js/concDev.js' }
        ]
      },
      vendor: {
        files: [
          { src: ['js/vendor/*.js', '!js/vendor/jquery-1.9.1.min.js', '!js/vendor/modernizr-2.6.2.min.js'], dest: 'js/concVend.js' }
        ]
      }
    },

    uglify: {
      options: {
        banner: '<%= banner %>'
      },
      develop: {
        files: [
          { src: ['<%= concat.develop.files[0].dest %>'], dest: 'js/concDev.min.js' }
        ]
      },
      vendor: {
        files: [
          { src: ['<%= concat.vendor.files[0].dest %>'], dest: 'js/concVend.min.js' }
        ]
      }
    },

    removelogging: {
      dist: {
        files: [
          { src: ['js/concDev.min.js'], dest: 'js/concDev.min.js' },
          { src: ['js/concVend.min.js'], dest: 'js/concVend.min.js' },
          { src: ['js/concDev.js'], dest: 'js/concDev.js' },
          { src: ['js/concVend.js'], dest: 'js/concVend.js' }
        ]
      }
    },

    jshint: {
      files: ['gruntfile.js', 'js/develop/*.js'],
      options: {
        globals: {
          jQuery: true,
          console: true,
          module: true,
          document: true
        }
      }
    },

    cssmin: {
      compress: {
        options: {
          banner: '<%= banner %>'
        },
        files: [
          { src: ['css/main.css'], dest: 'css/main.min.css' }
        ]
      }
    },

    imagemin: {
      dynamic_mappings: {
        files: [
          {
            expand: true,
            cwd: 'img/',
            src: ['**/*.png', '**/*.jpg'],
            dest: 'img/',
            ext: '.png'
          }
        ]
      }
    },

    sass: {
      compressed: {
        files: {
          'css/main.css': 'css/develop/main.scss'
        },
        options: {
          outputStyle: 'compressed'
        }
      },

      nested: {
        files: {
          'css/main.css': 'css/develop/main.scss'
        },
        options: {
          sourcemap: true,
          outputStyle: 'nested'
        }
      }
    },

    rsync: {
      deploy: {
        src: "./",
        dest: '<%= connection.dest %>', // i.e. "var/www"
        host: '<%= connection.host %>', // i.e. "user@server.com"
        recursive: true,
        syncDest: false,
        exclude: ["/node_modules", ".*"]
      }
    },

    watch: {
      options: {
        livereload: true
      },
      html: {
        files: '*.html'
      },
      js: {
        files: ['js/develop/plugins.js', 'js/develop/main.js'],
        tasks: ['jshint', 'concat:develop']
      },
      css: {
        files: 'css/develop/main.scss',
        tasks: ['sass:nested']
      }
    }

  });

  // Load Plugins
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-imagemin');
  grunt.loadNpmTasks("grunt-remove-logging");
  grunt.loadNpmTasks('grunt-sass');

  grunt.loadNpmTasks('grunt-rsync');


  // Task Lists
  grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'imagemin', 'sass:nested']);

  grunt.registerTask('server', ['watch']);
  grunt.registerTask('deploy', ['sass:compressed', 'rsync' ]);
};

ところで、私がうなり声でまったく新しいと言ったように、私のコードで他の悪い習慣を見つけた場合はお知らせください。また、ftront-end 用の優れたプラグイン名はいつでも大歓迎です。私は多くのプラグインがあることを知りました。

注:なぜか、多くの sass オプションが機能しません。たとえば、noCache、lineNumbers、debugInfo、outputStyle:'compact'、'expanded' (圧縮、ネストされた動作 oO)

〜あえ

4

4 に答える 4

5

本日(2013 年 7 月 10 日)現在:

前のバージョンの sass をインストールする場合

gem install sass --pre

および grunt-contrib-sass パッケージを使用すると、構成ファイルでソースマップを生成できます。

コンパスを使用するcompass: true場合は、sass タスク構成ブロックのオプションを使用してみてください。loadPath

于 2013-07-10T10:05:06.927 に答える
3

以下を使用してこれを機能させることができました:
* 1 つのメモ:マップ ファイルはどこにも追跡されないため、マップのバージョンを削除するまで、それが書き換えられていることに気付きませんでした。ファイルを書き込んでいます。

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        sass: {
            dist: {
                options: {
                    style: 'expanded',
                    debugInfo: true,
                    sourcemap: true
                }, 
                files: {
                    'styles/styles.css' : 'styles/sass/styles.scss'
                }
            },
        },
        watch: {
            css: {
                files: '**/*.scss',
                tasks: ['sass'],
                sourceComments: 'normal'
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.registerTask('default',['watch']);
}
于 2013-12-01T04:10:23.123 に答える
1

これを実際の回答として提供するためだけに、sass 安定版ではまだソースマップを利用できません。それらはアルファ リリースで取り組んでいます。元の質問は、コードが将来的に保証されていることを示すコミット メッセージを参照していました。

2013 年 6 月 24 日現在、ソースマップは grunt-contrib-sass または grunt-contrib-compass では利用できません。

于 2013-06-24T19:14:04.257 に答える
1

現在は簡単です。SA​​SS バージョン 3.4.5 はソース マップで非常にうまく機能し、それを設定するためのいくつかのオプションがあります。

$ sass -h
Usage: sass [options] [INPUT] [OUTPUT]

Description:
  Converts SCSS or Sass files to CSS.

[...]

Input and Output:
--scss              Use the CSS-superset SCSS syntax.
--sourcemap=TYPE    How to link generated output to the source files.
                       auto (default): relative paths where possible,
                                       file URIs elsewhere
                       file: always absolute file URIs
                       inline: include the source text in the sourcemap
                       none: no sourcemaps
[...] 

したがって、たとえば次のように Gruntfile.js を構成できます。

[...]

sass : {
    dist : {
        files : {
            'example.css' : 'example.scss'
        },
        options: {
             sourcemap: 'auto'
        }
    }
}

[...]

grunt sassタスク ソース マップを実行すると、自動的に生成されます。

于 2014-10-03T08:59:30.097 に答える