Gulp 4のドキュメントを見つけるのが非常に難しいので、誰かが助けてくれるかどうかここで尋ねるかもしれないと思いました。
とにかく私はGulpにかなり慣れておらず、開発に使用する仮想マシンで実行するまで、問題なくGulp3を使用しています。私のgulpファイルは非常に単純です。gulp-sassを使用してSASSをcssファイルにコンパイルします。これは正常に機能していましたが、cssファイルを保存するたびにファイルの書き込み権限が変更され、ブラウザーはファイルを読み取ることができません。
少し調べてみたところ、これはGulp3の問題でありGulp4で修正されたようです--- https://github.com/gulpjs/gulp/issues/1012 を参照してください。だから私はGulp4を試してみようと思ったので、ここの指示に従って更新しました http://www.ociweb.com/resources/publications/sett/gulp-4/ しかし、私は実際の問題を抱えていますドキュメントが見つからないため、実際のgulpfile.jsを設定します。これは私が現時点でつなぎ合わせたものですが、運がありません...残念ながら私のjsスキルが不足しています!!
ここにGulp4ファイルの例- https://Gist.github.com/demisx/beef93591edc1521330a
Gulpfileに必要なのは、gulp-sassを使用してsassをコンパイルすることだけです。
// include gulp
var gulp = require('gulp');
// include plugins
var sass = require('gulp-sass');
var paths = {
dirs: {
build: './furniture/css'
},
sass: './furniture/sass/**/*.scss'
};
// Shared tasks
gulp.task('glob', function () {
var pattern = '.build/**/*.css';
gulp.src(pattern, { read:false })
.pipe(using());
});
// SASS
gulp.task('sass', function () {
return gulp.src(paths.sass)
.pipe(sass())
.pipe(changed(paths.dirs.build))
.pipe(gulp.dest(paths.dirs.build))
.pipe(grep('./furniture/css', { read: false, dot: true }))
});
gulp.task('watch:styles', function () {
gulp.watch(paths.sass, 'sass');
});
// Default task
gulp.task('default'('build', 'ws', 'watch'));
さて、私たちはあなたが得ているエラーについてもう少し情報が必要かもしれません。ただし、問題がgulpfile.jsを機能させるだけの場合は、ここで機能するはずです。
あなたがすでに解決策を理解しているなら、それなら素晴らしい。しかし、これに出くわした他の人のために、私はいくつかのヒントを与えます、そしてそれからこれはうまくいくはずです。
システムから元のgulpをまだ削除していない場合は、削除する必要があります。また、追加した場合は、プロジェクトの依存関係として削除する必要があります。
_npm uninstall -g gulp
cd {your-project-dir}
npm uninstall gulp
_
次に、依存関係としてgulp4をグローバルにプロジェクトにインストールする必要があります。
_npm install -g gulpjs/gulp-cli#4.0
_
プロジェクト内:
_npm install --save-dev gulpjs/gulp-cli#4.0
_
重要な注意事項
現在は_gulpjs/gulp#4.0
_(_gulp-cli
_ではなくgulp
)
Gulpfileの基本バージョン:
注:コピーして貼り付ける場合は、gulp.src(...)パスと.pipe(gulp.dest(...))パスを変更します。
_// =========================================================
// gulpfile.js
// =========================================================
var gulp = require('gulp'),
sass = require('gulp-sass');
// ---------------------------------------------- Gulp Tasks
gulp.task('sass', function(){
return gulp.src("path/to/sass-file.scss")
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest("path/to/css-destination.css"))
});
// --------------------------------------- Default Gulp Task
gulp.task('default', function(){
console.log("It's working!");
});
_
Gulp4が機能しているかどうかを調べてみましょう。
ターミナルでデフォルトのgulpタスクを実行します。
gulp
It's working!
_が表示されている場合は、gulp4が正しくインストールされていることがわかります。それが機能した場合:
_gulp sass
_
それが機能した(それらのファイルを作成した)場合は、すべてが機能しており、以下の他のスニペットに進みます。
表示されているgulpfile.jsに基づいたニーズのソリューションは次のとおりです。
_// =========================================================
// gulpfile.js
// =========================================================
// ------------------------------------------------ requires
var gulp = require('gulp'),
sass = require('gulp-sass');
// ------------------------------------------------- configs
var paths = {
sass: {
src: './furniture/sass/**/*.{scss,sass}',
dest: './furniture/css',
opts: {
}
}
};
// ---------------------------------------------- Gulp Tasks
gulp.task('sass', function () {
return gulp.src(paths.sass.src)
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest(paths.sass.dest))
});
// ------------------------------------ Gulp Testing Message
gulp.task('message', function(){
console.log('It works!!');
});
// ---------------------------------------------- Gulp Watch
gulp.task('watch:styles', function () {
gulp.watch(paths.sass.src, gulp.series('sass'));
});
gulp.task('watch', gulp.series('sass',
gulp.parallel('watch:styles')
));
// -------------------------------------------- Default task
gulp.task('default', gulp.series('sass',
gulp.parallel('message', 'watch')
));
_
これが最終バージョンであると言いましたが、_gulp.series
_と_gulp.parallel
_が機能していることを示すために、オプションのmessage
タスクをgulpfileに残しました。以下の最後のセクションで簡単に説明します。必須ではなく、削除される場合があります。
また、次の内容を含む監視タスクを追加したことに気付くかもしれません。gulp.series('sass', gulp.parallel('watch:styles'))
これは、将来、_watch:
_タスクを追加できるようにするためです。例えば_watch:scripts
_。
gulp.series('sass'...)
部分は、純粋に便利なメソッドです。コードを記述してからgulpタスクを実行する場合は、変更が反映される前に、コードを再度変更する必要があります。監視タスクを実行する前に最初に_'sass'
_を追加すると、変更の監視を開始する前にトランスパイルされます。
Gulp4は現在以下を使用しています。
gulp.series
_:実行するものの順序を制御します。完了するまで、タスクを順番に実行します。例:gulp.series('task-name-1', 'task-name-2')
gulp.parallel('task-name-3', 'task-name-4')
seires
とparallel
を一緒に使用して、タスクのフローをより適切に制御できます。例:
_gulp.task('example',
gulp.series('thisTaskIsRunFirst', 'thisSecond',
gulp.parallel('theseThird-SameTime-1', 'theseThird-SameTime-2')
));
_
これらの例では、_gulp.series
_タスクで_watch:styles
_を使用したことに気付くでしょう。
_ // ---------------------------------------------- Gulp Watch
gulp.task('watch:styles', function () {
gulp.watch(paths.sass, gulp.series('sass'));
});
_
これはおそらく、gulp4ウォッチメソッドのバグが原因です。 _'sass'
_を使用するだけでは監視タスクを機能させることができず、代わりにgulp.series('sass')
を使用する必要があったため、これが当てはまると思います。
gulp 4を自分で学んだとき、他の人がgulp 4の例で従来のウォッチタスク形式を使用していたので、おそらくそれはバグだと言いました。
_gulp.task('watch', function(){
gulp.watch('path/of/files/to/watch/**/*.scss', 'sass');
});
_
Gulp watchを使用するには、この回避策を考え出す必要がありました。これは問題ありません。また、必要に応じて、他のタスクを実行することで他の利点を得ることができます。
書き終えたら、戻ってきてGulp4のチュートリアルリンクをいくつか提供します。