PHP Gulp Livereload
PHP Gulp Livereload
我有一个 gulp 文件,我从 here 抓取并修改为:
var gulp = require('gulp'),
path = require('path'),
del = require('del'),
run = require('run-sequence'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
include = require('gulp-include'),
imagemin = require('gulp-imagemin'),
svgmin = require('gulp-svgmin'),
cache = require('gulp-cache'),
watch = require('gulp-watch'),
livereload = require('gulp-livereload')
//lr = require('tiny-lr'),
//server = lr()
;
var config = {
// Source Config
src : 'src', // Source Directory
src_assets : 'src/assets', // Source Assets Directory
src_fonts : 'src/assets/fonts', // Source Fonts Directory
src_images : 'src/assets/img', // Source Images Directory
src_javascripts : 'src/assets/js', // Source Javascripts Directory
src_stylesheets : 'src/assets/styles', // Source Styles Sheets Directory
src_main_scss : 'src/assets/styles/main.scss', // Source main.scss
src_main_js : 'src/assets/scripts/main.js', // Source main.js
// Destination Config
dist : 'dist', // Destination Directory
dist_assets : 'dist/assets', // Destination Assets Directory
dist_fonts : 'dist/assets/fonts', // Destination Fonts Directory
dist_images : 'dist/assets/img', // Destination Images Directory
dist_javascripts : 'dist/assets/js', // Destination Javascripts Directory
dist_stylesheets : 'dist/assets/css', // Destination Styles Sheets Directory
// Auto Prefixer
autoprefix : 'last 3 version' // Number of version Auto Prefixer to use
};
gulp.task('styles', function () {
return gulp.src(config.src_main_scss)
.pipe(sass({
outputStyle: 'expanded',
precision: 10,
sourceComments: 'none'
}))
.pipe(autoprefixer(config.autoprefix))
.pipe(gulp.dest(config.dist_stylesheets))
.pipe(livereload())
});
gulp.task('scripts', function () {
gulp.src(config.src_main_js)
.pipe(include())
.pipe(gulp.dest(config.dist_javascripts))
.pipe(livereload())
});
gulp.task('php', function() {
return gulp.src([path.join(config.src, '/**/*.php')])
.pipe(gulp.dest(config.dist))
.pipe(livereload())
});
gulp.task('images', function() {
gulp.src(path.join(config.src_images, '/**/*.png'))
.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))
.pipe(gulp.dest(config.dist_images))
});
gulp.task('svg', function() {
gulp.src(path.join(config.src_images, '/**/*.svg'))
.pipe(svgmin())
.pipe(gulp.dest(config.dist_images))
});
gulp.task('clean', function() {
del(path.join(config.dist, '/**/*'))
});
gulp.task('watch', function() {
//server.listen(35729, function (err) {
// if (err) {
// return console.log(err)
// };
gulp.watch(path.join(config.src_stylesheets, '/**/*.scss'), ['styles']);
gulp.watch(path.join(config.src_javascripts, '/**/*.js'), ['scripts']);
gulp.watch(path.join(config.src, '/**/*.php'), ['php']);
//});
});
gulp.task('default', function(cb) {
run('build', ['watch'], cb);
});
gulp.task('build', function (cb) {
run('clean', 'styles', 'scripts', 'php', 'images', 'svg', cb);
});
现在,如果我 运行 'gulp' 一切正常,但是当我访问我的 apache 主机时,实时重新加载不再有效。
我不太熟悉实时重新加载,所以请引导我完成任何解决方案。
我已经安装了 live reload 插件并打开了它,仍然没有用。
我是否遗漏了与主机相关的步骤?
好吧,我不知道这个 Gulp 文件首先向你承诺了什么,但我在这里遗漏了两件事:
- 与您的 运行 服务器的任何连接。
- HTML 文件中插入 Livereload 的位置。 Livereload 需要知道在哪里注入,只是不会自动开箱即用
这可能很棘手,尤其是当您已经启动服务器并且 运行 时,它需要大量配置。 BrowserSync 可以很容易地与 Gulp 集成并且确实具有开箱即用的良好 Livereload 设置的工具。您可以启动它并为您拥有的任何 运行 服务器创建代理。它还将负责插入 LiveReload 片段。我强烈建议您切换到那个,特别是如果您对那个主题还很陌生。我只为你做一切:-)
我写过关于 BrowserSync here 的文章,但要使其正常工作,您必须进行以下更改:
设置 BrowserSync
将此添加到您的 Gulp 文件的任意位置:
var browserSync = require('browser-sync');
browserSync({
proxy: 'localhost:80',
port: 8080,
open: true,
notify: false
});
(别忘了先 npm install --save-dev browser-sync
)。这将创建一个新服务器,代理您的 MAMP 并注入 LiveReload 所需的一切。在 localhost:8080
打开您的页面(BrowserSync 会为您自己完成),您就可以开始了
添加重新加载调用
你把 livereload
的地方都改成
.pipe(browserSync.reload({stream: true}))
例如:
gulp.task('scripts', function () {
return gulp.src(config.src_main_js)
.pipe(include())
.pipe(gulp.dest(config.dist_javascripts))
.pipe(browserSync.reload({stream:true}))
});
这将触发 LiveReload 并刷新您的源。确保你在任何地方都有它,在你改变东西的地方。
比你应该可以去。祝你好运!
还有一件事
请在每个gulp.src
前写一点return
声明。这将使 Gulp 知道您正在使用流,使其更能够使用流。
我有一个 gulp 文件,我从 here 抓取并修改为:
var gulp = require('gulp'),
path = require('path'),
del = require('del'),
run = require('run-sequence'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
include = require('gulp-include'),
imagemin = require('gulp-imagemin'),
svgmin = require('gulp-svgmin'),
cache = require('gulp-cache'),
watch = require('gulp-watch'),
livereload = require('gulp-livereload')
//lr = require('tiny-lr'),
//server = lr()
;
var config = {
// Source Config
src : 'src', // Source Directory
src_assets : 'src/assets', // Source Assets Directory
src_fonts : 'src/assets/fonts', // Source Fonts Directory
src_images : 'src/assets/img', // Source Images Directory
src_javascripts : 'src/assets/js', // Source Javascripts Directory
src_stylesheets : 'src/assets/styles', // Source Styles Sheets Directory
src_main_scss : 'src/assets/styles/main.scss', // Source main.scss
src_main_js : 'src/assets/scripts/main.js', // Source main.js
// Destination Config
dist : 'dist', // Destination Directory
dist_assets : 'dist/assets', // Destination Assets Directory
dist_fonts : 'dist/assets/fonts', // Destination Fonts Directory
dist_images : 'dist/assets/img', // Destination Images Directory
dist_javascripts : 'dist/assets/js', // Destination Javascripts Directory
dist_stylesheets : 'dist/assets/css', // Destination Styles Sheets Directory
// Auto Prefixer
autoprefix : 'last 3 version' // Number of version Auto Prefixer to use
};
gulp.task('styles', function () {
return gulp.src(config.src_main_scss)
.pipe(sass({
outputStyle: 'expanded',
precision: 10,
sourceComments: 'none'
}))
.pipe(autoprefixer(config.autoprefix))
.pipe(gulp.dest(config.dist_stylesheets))
.pipe(livereload())
});
gulp.task('scripts', function () {
gulp.src(config.src_main_js)
.pipe(include())
.pipe(gulp.dest(config.dist_javascripts))
.pipe(livereload())
});
gulp.task('php', function() {
return gulp.src([path.join(config.src, '/**/*.php')])
.pipe(gulp.dest(config.dist))
.pipe(livereload())
});
gulp.task('images', function() {
gulp.src(path.join(config.src_images, '/**/*.png'))
.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))
.pipe(gulp.dest(config.dist_images))
});
gulp.task('svg', function() {
gulp.src(path.join(config.src_images, '/**/*.svg'))
.pipe(svgmin())
.pipe(gulp.dest(config.dist_images))
});
gulp.task('clean', function() {
del(path.join(config.dist, '/**/*'))
});
gulp.task('watch', function() {
//server.listen(35729, function (err) {
// if (err) {
// return console.log(err)
// };
gulp.watch(path.join(config.src_stylesheets, '/**/*.scss'), ['styles']);
gulp.watch(path.join(config.src_javascripts, '/**/*.js'), ['scripts']);
gulp.watch(path.join(config.src, '/**/*.php'), ['php']);
//});
});
gulp.task('default', function(cb) {
run('build', ['watch'], cb);
});
gulp.task('build', function (cb) {
run('clean', 'styles', 'scripts', 'php', 'images', 'svg', cb);
});
现在,如果我 运行 'gulp' 一切正常,但是当我访问我的 apache 主机时,实时重新加载不再有效。
我不太熟悉实时重新加载,所以请引导我完成任何解决方案。
我已经安装了 live reload 插件并打开了它,仍然没有用。
我是否遗漏了与主机相关的步骤?
好吧,我不知道这个 Gulp 文件首先向你承诺了什么,但我在这里遗漏了两件事:
- 与您的 运行 服务器的任何连接。
- HTML 文件中插入 Livereload 的位置。 Livereload 需要知道在哪里注入,只是不会自动开箱即用
这可能很棘手,尤其是当您已经启动服务器并且 运行 时,它需要大量配置。 BrowserSync 可以很容易地与 Gulp 集成并且确实具有开箱即用的良好 Livereload 设置的工具。您可以启动它并为您拥有的任何 运行 服务器创建代理。它还将负责插入 LiveReload 片段。我强烈建议您切换到那个,特别是如果您对那个主题还很陌生。我只为你做一切:-)
我写过关于 BrowserSync here 的文章,但要使其正常工作,您必须进行以下更改:
设置 BrowserSync
将此添加到您的 Gulp 文件的任意位置:
var browserSync = require('browser-sync');
browserSync({
proxy: 'localhost:80',
port: 8080,
open: true,
notify: false
});
(别忘了先 npm install --save-dev browser-sync
)。这将创建一个新服务器,代理您的 MAMP 并注入 LiveReload 所需的一切。在 localhost:8080
打开您的页面(BrowserSync 会为您自己完成),您就可以开始了
添加重新加载调用
你把 livereload
的地方都改成
.pipe(browserSync.reload({stream: true}))
例如:
gulp.task('scripts', function () {
return gulp.src(config.src_main_js)
.pipe(include())
.pipe(gulp.dest(config.dist_javascripts))
.pipe(browserSync.reload({stream:true}))
});
这将触发 LiveReload 并刷新您的源。确保你在任何地方都有它,在你改变东西的地方。
比你应该可以去。祝你好运!
还有一件事
请在每个gulp.src
前写一点return
声明。这将使 Gulp 知道您正在使用流,使其更能够使用流。