官术网_书友最值得收藏!

Using the @debug, @warn, and @error directives

In this recipe, you will learn how to use the @debug, @warn, and @error directives to debug your code or validate the input for mixins and functions.

Getting ready

This recipe requires the command-line Ruby Sass compiler installed. In the Installing Sass for command-line usage recipe of Chapter 1, Getting Started with Sass, you can read about how to install Ruby and Ruby Sass. You can edit the Sass templates with your favorite text editor.

How to do it...

Use the following steps to learn how to use the @debug, @warn, and @error directives to debug your Sass code:

  1. Create a Sass file test.scss that contains the following SCSS code:
    @mixin set-width($width) {
    
      @if $width < 50 {
        @error "width should be >= 50";
        $width: 1px * $width;
      }
    
      @if unit($width) not 'px' {
        @warn "width (#{$width}) converted to pixels";
        $width: 1px * $width;
      }
    
      $width: $width * 10;
      @debug "width: #{$width}";
      width: $width;
    }
    
    div {
      @include set-width(50);
    }
  2. Then, run the following command in your console:
    sass test.scss test.css
    
  3. You will find that the preceding command creates both a test.css and a test.css.map file. In your console, you should find the following output:
    WARNING: width (50) converted to pixels
             on line 9 of test.scss, in `set-width'
             from line 19 of test.scss
    
    test.scss:14 DEBUG: width: 500px
  4. Finally, change @include set-width(50); into @include set-width(49); in the test.scss file and run the command from the second step again.
  5. Now, the output to the console will look as follows:
    Error: width should be >= 50
            on line 4 of test.scss, in `set-width'
            from line 19 of test.scss
      Use --trace for backtrace.

How it works...

SassScript is a small set of extensions used by Sass in addition to the plain CSS property syntax. SassScript enables you to use variables, arithmetic, and extra functions to set the values of your CSS properties. You can also use SassScript to set property and selector names via interpolation (refer to Chapter 3, Variables, Mixins, and Functions). In the Using Sass interactive mode and SassScript recipe of Chapter 1, Getting Started with Sass, you can read how to test SassScript by running Sass in the interactive mode.

The @debug, @warn, and @error directives enable you to write SassScript expressions to the standard error output stream. You can use this information to debug your code or verify the correct usage of reusable and complex code, such as mixins and functions. You can read more about mixins and the @function directive in Chapter 3, Variables, Mixins and Functions of this book, and Sass the @if directive is described in the Using @if recipe of Chapter 8, Advanced Sass Coding.

The @debug and @warn directives only write a message to the output stream. The @error directive generates an error, just like a normal Sass error and stops the compilation process.

There's more...

The output of the @debug and @warn directives can be suppressed by using the -quiet option. You can repeat the command from the second step of this recipe with the -quiet option by writing the following command in your console:

sass --quiet test.scss test.css

The preceding command compiles your Sass code without generating any output to the standard error output stream. The @error directive cannot be suppressed or ignored. Although the @error directive stops the compilation process, Sass does generate the test.css file. After an error is thrown by the @error directive, the test.css file does not contain valid CSS code; instead, the error trace is saved to it. A test.css.map source map file will not be generated.

主站蜘蛛池模板: 肇源县| 綦江县| 广昌县| 南汇区| 娄烦县| 开原市| 江安县| 菏泽市| 犍为县| 小金县| 钟山县| 伊吾县| 塔河县| 凌海市| 鹰潭市| 额济纳旗| 南汇区| 金平| 文化| 大港区| 杭锦旗| 晋江市| 忻州市| 土默特左旗| 桂阳县| 兖州市| 吕梁市| 白河县| 商水县| 临夏市| 屯昌县| 柳河县| 马山县| 同心县| 海阳市| 游戏| 滕州市| 滕州市| 古浪县| 明水县| 拉萨市|