92 lines
3.0 KiB
JavaScript
92 lines
3.0 KiB
JavaScript
var url = require('url');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var pkg = require('./package.json');
|
|
|
|
var gulp = require('gulp');
|
|
var uglify = require('gulp-uglify');
|
|
var minify = require('gulp-minify-css');
|
|
var concat = require('gulp-concat');
|
|
var rename = require('gulp-rename');
|
|
var header = require('gulp-header');
|
|
var del = require('del');
|
|
var gulpif = require('gulp-if');
|
|
var minimist = require('minimist');
|
|
var zip = require('gulp-zip');
|
|
|
|
var livereload = require('gulp-livereload');
|
|
var webserver = require('gulp-webserver');
|
|
|
|
var task = {
|
|
mincss: function() {
|
|
return gulp.src(['./src/css/**/*.css'])
|
|
.pipe(minify())
|
|
.pipe(header.apply(null, ['/** <%= pkg.name %>-v<%= pkg.version %> <%= pkg.license %> License By <%= pkg.homepage %> e-mail:<%= pkg.email %> */\n', { pkg: pkg }]))
|
|
.pipe(gulp.dest('./build/css'));
|
|
},
|
|
minjs: function() {
|
|
return gulp.src('./src/js/*.js')
|
|
.pipe(gulpif(['!app.js', '!config.js'], uglify()))
|
|
.pipe(header.apply(null, ['/** <%= pkg.name %>-v<%= pkg.version %> <%= pkg.license %> License By <%= pkg.homepage %> e-mail:<%= pkg.email %> */\n <%= js %>', { pkg: pkg, js: ';' }]))
|
|
.pipe(gulp.dest('./build/js'));
|
|
},
|
|
file: function() {
|
|
return gulp.src(['./src/images/**/*.{png,jpg,gif,html,mp3,json}'])
|
|
.pipe(rename({}))
|
|
.pipe(gulp.dest('./build/images'));
|
|
}
|
|
};
|
|
gulp.task('minjs', task.minjs);
|
|
gulp.task('mincss', task.mincss);
|
|
gulp.task('file', task.file);
|
|
gulp.task('default', function() {
|
|
|
|
});
|
|
gulp.task('all', ['clear'], function() {
|
|
for (var key in task) {
|
|
task[key]();
|
|
}
|
|
});
|
|
gulp.task('clear', function(cb) {
|
|
return del(['./build/*'], cb);
|
|
});
|
|
|
|
//web服务器 用于开发环境
|
|
gulp.task('webserver', function() {
|
|
gulp.src('./') // 服务器目录(./代表根目录)
|
|
.pipe(webserver({ // 运行gulp-webserver
|
|
port: 8050, //端口,默认8000
|
|
livereload: true, // 启用LiveReload
|
|
open: true, // 服务器启动时自动打开网页
|
|
directoryListing: {
|
|
enable: true,
|
|
path: 'index.html' //配置默认访问页面
|
|
},
|
|
middleware: function(req, res, next) {
|
|
//mock local data
|
|
var urlObj = url.parse(req.url, true),
|
|
method = req.method;
|
|
if (!urlObj.pathname.match(/^\/api/)) { //不是api开头的数据,直接next
|
|
next();
|
|
return;
|
|
}
|
|
var mockDataFile = path.join(__dirname, urlObj.pathname) + ".js";
|
|
//file exist or not
|
|
fs.access(mockDataFile, fs.F_OK, function(err) {
|
|
if (err) {
|
|
// res.setHeader('Content-Type', 'application/json');
|
|
res.end(JSON.stringify({
|
|
"status": "没有找到此文件",
|
|
"notFound": mockDataFile
|
|
}));
|
|
return;
|
|
}
|
|
var data = fs.readFileSync(mockDataFile, 'utf-8');
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(data);
|
|
});
|
|
next();
|
|
},
|
|
proxies: []
|
|
}));
|
|
}); |