手軽な方法としては、 gulp-stylelint
の fix
オプションを指定する方法があります。
たとえば、以下のようなディレクトリ構成で、
sample
├ scss
│ ├ style.scss
│ └ _mixins.scss
├ package.json
└ .stylelintrc
package.json
, gulpfile.js
が以下のように、
JSON
1{
2 "name": "sample",
3 "version": "1.0.0",
4 "description": "",
5 "main": "index.js",
6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1"
8 },
9 "keywords": [],
10 "author": "",
11 "license": "ISC",
12 "devDependencies": {
13 "autoprefixer": "^9.7.3",
14 "gulp": "^4.0.2",
15 "gulp-postcss": "^8.0.0",
16 "gulp-sass": "^4.0.2",
17 "gulp-strip-css-comments": "^2.0.0",
18 "gulp-stylelint": "^10.0.0",
19 "stylelint": "^12.0.0"
20 }
21}
JavaScript
1exports.default = function () {
2 const autoprefixer = require('autoprefixer');
3 const gulp = require('gulp');
4 const sass = require('gulp-sass');
5 const postcss = require('gulp-postcss');
6 const stripCssComments = require('gulp-strip-css-comments');
7 const gulpStylelint = require('gulp-stylelint');
8 return gulp.src('./scss/style.scss')
9 .pipe(sass({outputStyle: "expanded"}))
10 .pipe(postcss([ autoprefixer() ]))
11 .pipe(stripCssComments())
12 .pipe(gulpStylelint({ fix: true }))
13 .pipe(gulp.dest('./dest'))
14};
.stylelintrc
が以下のように、
JSON
1{
2 "rules": {
3 "max-empty-lines": 1,
4 "declaration-empty-line-before": "never",
5 "block-closing-brace-empty-line-before": "never"
6 }
7}
各 SCSS ファイルが以下のようになっているとします。
style.scss
SCSS
1@import "mixins";
2
3.box { @include transform(rotate(30deg)); }
4
5/* This CSS will print because %message-shared is extended. */
6%message-shared {
7 border: 1px solid #ccc;
8 padding: 10px;
9 color: #333;
10}
11
12// This CSS won't print because %equal-heights is never extended.
13%equal-heights {
14 display: flex;
15 flex-wrap: wrap;
16}
17
18.message {
19 @extend %message-shared;
20}
21
22.success {
23 @extend %message-shared;
24 border-color: green;
25}
26
27.error {
28 @extend %message-shared;
29 border-color: red;
30}
31
32.warning {
33 @extend %message-shared;
34 border-color: yellow;
35}
_mixins.scss
SCSS
1@mixin transform($property) {
2 /* autoprefixer: ignore next */
3 box-sizing: border-box;
4 transform: $property;
5}
ここで default
タスクを実行すると、出力される CSS ファイルは以下のようになり、コメントがあった空白行が削除されていることが確認出来ます。
CSS
1.box {
2 box-sizing: border-box;
3 -webkit-transform: rotate(30deg);
4 transform: rotate(30deg);
5}
6
7.message, .success, .error, .warning {
8 border: 1px solid #ccc;
9 padding: 10px;
10 color: #333;
11}
12
13.success {
14 border-color: green;
15}
16
17.error {
18 border-color: red;
19}
20
21.warning {
22 border-color: yellow;
23}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 13:36