私のgulpfile.jsとCodeIgniterディレクトリ構造を考慮して、gulp.watch関数を使用してファイル変更のディレクトリを監視し、関連タスクなしでgulp-sftpを使用していますか?そうでない場合は、これを達成する別の方法がありますか?Gulp.js - 変更/保存時にビューを自動的にアップロード
問題:
私は今日初めてGulp.jsを使用して開始し、私はtutorialに従うことで、かなり痛みを伴わずに、いくつかのタスクを自動化することができましたが、残りのとは異なり、私のアセットファイルは、アプリケーションビューファイルが変更されたときに、それらを見て自動的にアップロードする方法が見つからないようです。
主な違いは、監視対象のビューディレクトリに何か変更があったときに実行するタスクがないことです。私が実行するのに役立つタスクを思いつくことができたら、私の問題は解決されるだろうが、私はむしろそれを完全に回避する解決策を知りたい。
私にとって、これは簡単な解決策の問題だと思われますが、Gulpの機能については十分に分かりません。うまくいけば、私が説明していることが理にかなっています場合によっては、できるだけ多くの情報を提供します。
基本的なディレクトリ構造:
mywebsite.com
|
+-- application
| |
| +-- controllers
| +-- models
| +-- views
|
+-- assets
| |
| +-- css
| +-- images
| +-- js
| +-- src
| |
| +-- images
| +-- js
| +-- scss
|
+-- system
gulpfile.js
// Modules
var gulp = require('gulp'),
newer = require('gulp-newer'),
imagemin = require('gulp-imagemin'),
concat = require('gulp-concat'),
deporder = require('gulp-deporder'),
stripdebug = require('gulp-strip-debug'),
uglify = require('gulp-uglify'),
sass = require('gulp-sass'),
postcss = require('gulp-postcss'),
assets = require('postcss-assets'),
autoprefixer = require('autoprefixer'),
mqpacker = require('css-mqpacker'),
cssnano = require('cssnano'),
sftp = require('gulp-sftp');
// Development Mode?
var devBuild = (process.env.NODE_ENV !== 'production');
// Folder Aliases
var folder = {
src: 'assets/src/',
build: 'assets/',
app: 'application/' // <-------- Separate Folder Alias
};
// SFTP Creds
var host = 'webserver.hostingcompany.com',
user = 'username',
pass = 'password',
remotePath = 'mywebsite.com';
// Optimize Images
gulp.task('images', function() {
var out = folder.build + 'images/';
return gulp.src(folder.src + 'images/**/*')
.pipe(newer(out))
.pipe(imagemin({ optimizationLevel: 5 }))
.pipe(gulp.dest(out));
});
// JavaScript Processing
gulp.task('js', function() {
var jsbuild = gulp.src(folder.src + 'js/**/*')
.pipe(deporder())
.pipe(concat('all.js'));
if (!devBuild) {
jsbuild = jsbuild
.pipe(stripdebug())
.pipe(uglify());
}
return jsbuild.pipe(gulp.dest(folder.build + 'js/'));
});
// CSS Processing
gulp.task('css', ['images'], function() {
var postCssOpts = [
assets({ loadPaths: ['images/'] }),
autoprefixer({ browsers: ['last 2 versions', '> 2%'] }),
mqpacker
];
if (!devBuild) {
postCssOpts.push(cssnano);
}
return gulp.src(folder.src + 'scss/screen.scss')
.pipe(sass({
outputStyle: 'nested',
imagePath: 'images/',
precision: 3,
errLogToConsole: true
}))
.pipe(postcss(postCssOpts))
.pipe(gulp.dest(folder.build + 'css/'));
});
// SFTP Tasks
gulp.task('sftp', function() {
return gulp.src(folder.src + '*')
.pipe(sftp({
host: host,
user: user,
pass: pass,
remotePath: remotePath
}));
});
// Run Tasks
gulp.task('run', ['images', 'js', 'css', 'sftp']);
// Watch for Changes
gulp.task('watch', function() {
gulp.watch(folder.src + 'images/**/*', ['images']);
gulp.watch(folder.src + 'js/**/*', ['js']);
gulp.watch(folder.src + 'scss/**/*', ['css']);
gulp.watch(folder.app + 'views/**/*.php', ['']); // <-------- The Prospective Watch Function
});
// Default Task
gulp.task('default', ['run', 'watch']);
;
時計を扱うには 'gulp-watch'モジュールが必要です。 – aslantorret
@aslantorret他のすべてのタスクが正しく機能するため、これは真実ではありません。 Gulp.watchは組み込み関数です。 –