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

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.

主站蜘蛛池模板: 黄龙县| 固阳县| 宁晋县| 巴青县| 淮北市| 禹州市| 淳化县| 澄迈县| 无为县| 宁海县| 阿克苏市| 达孜县| 淄博市| 锡林郭勒盟| 沭阳县| 中宁县| 芜湖市| 仪陇县| 伊吾县| 西青区| 郎溪县| 襄城县| 广丰县| 连城县| 古蔺县| 米泉市| 财经| 神池县| 通化县| 明水县| 绥滨县| 双辽市| 共和县| 上思县| 河源市| 兰考县| 广东省| 炉霍县| 双桥区| 德庆县| 徐汇区|