带有实时重载和 CSS 注入功能的服务器
使用 BrowserSync 和 gulp,你可以轻松创建一个开发服务器,该服务器可以被同一 WiFi 网络上的任何设备访问。BrowserSync 还内置了实时重载功能,所以不需要其他配置。
首先安装模块:
$ npm install --save-dev gulp browser-sync
然后,考虑以下文件结构...
gulpfile.js
app/
styles/
main.css
scripts/
main.js
index.html
...你可以轻松地从 app
目录提供文件,并在其中任何文件发生变化时让所有浏览器重新加载,只需在 gulpfile.js
中添加以下内容:
var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
// 监视文件变化并重新加载
gulp.task('serve', function() {
browserSync({
server: {
baseDir: 'app'
}
});
gulp.watch(['*.html', 'styles/**/*.css', 'scripts/**/*.js'], {cwd: 'app'}, reload);
});
并在 index.html
中包含 CSS:
<html>
<head>
...
<link rel="stylesheet" href="styles/main.css">
...
要提供文件并启动指向默认 URL(http://localhost:3000)的浏览器窗口,请运行:
gulp serve
+ CSS 预处理器
一个常见的用例是在 CSS 文件经过预处理后重新加载它们。以 Sass 为例,这是如何指示浏览器在不进行完整页面刷新的情况下重新加载 CSS。
考虑这个更新后的文件结构...
gulpfile.js
app/
scss/
main.scss
scripts/
main.js
index.html
...你可以轻松地监视 scss
目录中的 Sass 文件,并在其中任何一个文件发生变化时让所有浏览器重新加载,只需在 gulpfile.js
中添加以下内容:
var gulp = require('gulp');
var sass = require('gulp-ruby-sass');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
gulp.task('sass', function() {
return sass('scss/styles.scss')
.pipe(gulp.dest('app/css'))
.pipe(reload({ stream:true }));
});
// 监视 Sass 文件的变化,使用 'sass' 任务运行 Sass 预处理器并重新加载
gulp.task('serve', gulp.series('sass', function() {
browserSync({
server: {
baseDir: 'app'
}
});
gulp.watch('scss/*.scss', gulp.series('sass'));
}));
并在 index.html
中包含预处理的 CSS:
<html>
<head>
...
<link rel="stylesheet" href="css/main.css">
...
要提供文件并启动指向默认 URL(http://localhost:3000)的浏览器窗口,请运行:
gulp serve