前提・実現したいこと
下記のようなファイル構成で、indexとaboutは_commonを@importしているとします。
・_common.scss
・index.scss
・about.scss
しかし_commonを変更してもindexやaboutは書き出されないため、
各ファイルを個別にコンパイルするか、
ターミナル上でgulp sassのようにコマンドを実行をするしかありません。
理想としては、_commonを変更したら、
index.scssとabout.scssを一気にコンパイルしたいです。
gulp-progenyというのを見つけて試してみたのですが、
エラーが出てしまいダメでした。
よろしくお願いいたします。
試したこと
・gulp-progeny
参考:gulpでCSSの差分ビルド(https://qiita.com/73cha/items/270e2dc33c63292dd184)
該当のソースコード
■gulpfile.babel.js
scss
1// 使用しているプラグイン 2import gulp from 'gulp'; 3import browserify from 'browserify'; 4import babelRegister from 'babel-register'; 5import babelify from 'babelify'; 6import watchify from 'watchify'; 7import browserSync from 'browser-sync'; 8import progeny from "gulp-progeny"; 9// gulp-**** 系のプラグインを一気に読み込む 10import gulpLoadPlugins from 'gulp-load-plugins'; 11// gulp-**** 系のプラグインを$.****で呼び出せるように 12const $ = gulpLoadPlugins(); 13 14gulp.task('sass', () => { 15// ↓もともとは読み込み専用(_*.scss)は除外してました 16// gulp.src(['src/scss/**/*.scss','!src/scss/**/_*.scss']) 17 gulp.src(['src/scss/**/*.scss']) 18 .pipe($.cached('sass')) 19// ↓を試してみたけどエラーがでます 20 .pipe($.progeny()) 21/* 22Users/username/works/html/clientname/app/dev/node_modules/progeny/index.js:106 23 return val.match(last)[1]; 24 ^ 25TypeError: Cannot read property 'match' of null 26*/ 27 .pipe($.plumber({ 28 handleError: function(err) { 29 console.log(err); 30 this.emit('end'); 31 } 32 })) 33 .pipe($.sass()) 34 .pipe($.pleeease({ 35 sass: true 36 })) 37 .pipe($.rename({ 38 suffix: '.min', 39 extname: '.css' 40 })) 41 .pipe(gulp.dest('./dest/css')); 42}); 43 44///////////////////////////// 45// watch 46///////////////////////////// 47 48// brower sync 49gulp.task('browser-sync', () => { 50 browserSync.init({ 51 port: 9000, 52 server: { 53 baseDir: "./dest/", 54 index : "index.html" //インデックスファイル 55 } 56 }); 57}); 58 59gulp.task('bs-reload', () => { 60 browserSync.reload(); 61}); 62 63// default 64gulp.task('default', ['browser-sync'], () => { 65//gulp.task('default', () => { 66 $.watch('src/scss/**/*.scss', () => { return gulp.start(['sass','bs-reload'])}); 67}); 68
補足情報(FW/ツールのバージョンなど)
■package.json
json
1{ 2 "name": "dev", 3 "version": "1.0.0", 4 "description": "gulp template", 5 "main": "gulpfile.babel.js", 6 "author": "author name", 7 "license": "MIT", 8 "private": true, 9 "dependencies": { 10 "@fortawesome/fontawesome-free": "^5.3.1", 11 "babel-core": "^6.26.3", 12 "babel-preset-es2015": "^6.24.1", 13 "babel-preset-es2016": "^6.24.1", 14 "babel-register": "^6.26.0", 15 "babelify": "^8.0.0", 16 "bootstrap": "^4.1.2", 17 "browser-sync": "^2.24.5", 18 "browserify": "^16.2.2", 19 "gulp": "^3.9.1", 20 "gulp-babel": "^7.0.1", 21 "gulp-browserify": "^0.5.1", 22 "gulp-cached": "^1.1.1", 23 "gulp-changed": "^3.2.0", 24 "gulp-connect-php": "^1.0.3", 25 "gulp-ejs": "^3.1.3", 26 "gulp-imagemin": "^4.1.0", 27 "gulp-load-plugins": "^1.5.0", 28 "gulp-notify": "^3.2.0", 29 "gulp-pleeease": "^2.0.2", 30 "gulp-plumber": "^1.2.0", 31 "gulp-progeny": "^0.4.1", 32 "gulp-rename": "^1.3.0", 33 "gulp-sass": "^4.0.1", 34 "gulp-uglify": "^3.0.0", 35 "gulp-useref": "^3.1.5", 36 "gulp-watch": "^5.0.0", 37 "imagemin-pngquant": "^5.1.0", 38 "jquery": "^3.3.1", 39 "npm": "^6.1.0", 40 "watchify": "^3.11.0" 41 }, 42 "devDependencies": { 43 "slick-carousel": "^1.8.1" 44 } 45} 46
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。