質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

1回答

3163閲覧

gulpでsassを依存関係を解決してコンパイルしたい

addapter.koso

総合スコア22

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

0グッド

1クリップ

投稿2018/10/09 02:34

前提・実現したいこと

下記のようなファイル構成で、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

babelの記法がわからないので読み替えて下さい。

「sass-module-importer」をインストールして、「sass-module-importer」をgulpfileに読み込む。

javascript

1const moduleimporter = require('sass-module-importer');

あとは、

javascript

1 2.pipe(sass()) 3    4   ↓ 5 6.pipe(sass({ 7 importer: moduleimporter() 8}))

投稿2018/10/18 04:26

編集2018/10/18 04:51
kenk1024

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問