You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.5 KiB
JavaScript
105 lines
2.5 KiB
JavaScript
/******************************************************
|
|
* ----前端工程自动化构建---- *
|
|
* *
|
|
* @author dai-siki同学 < 851733175@qq.com > *
|
|
******************************************************/
|
|
|
|
// import package
|
|
const $ = require('gulp-load-plugins')(),
|
|
webpack = require('webpack-stream'),
|
|
named = require('vinyl-named'),
|
|
browserSync = require('browser-sync').create(),
|
|
reload = browserSync.reload,
|
|
gulp = require('gulp');
|
|
|
|
/** 开发
|
|
-------------------------------------------------------------*/
|
|
|
|
gulp.task('css', function() {
|
|
gulp.src('./scss/*.scss').pipe($.sass()).pipe($.autoprefixer('last 10 version')).pipe(gulp.dest('./'));
|
|
});
|
|
|
|
// jS task
|
|
gulp.task('js', function() {
|
|
var webpack_config = {
|
|
module: {
|
|
loaders: [
|
|
{
|
|
test: /\.js$/,
|
|
loader: 'babel',
|
|
query: {
|
|
presets: [
|
|
'es2015', 'stage-3'
|
|
],
|
|
plugins: [
|
|
['transform-runtime', {
|
|
helpers: false,
|
|
polyfill: false,
|
|
regenerator: true
|
|
}]
|
|
]
|
|
}
|
|
}, {
|
|
test: /\.css$/,
|
|
loaders: ['style', 'css']
|
|
}, {
|
|
test: /\.json$/,
|
|
loaders: ['json']
|
|
}, {
|
|
test: /\.(scss|sass)$/,
|
|
loaders: ['style', 'css', 'sass']
|
|
}, {
|
|
test: /\.(html|tpl)$/,
|
|
loaders: ['html']
|
|
}, {
|
|
test: /\.vue$/,
|
|
loaders: ['vue']
|
|
}
|
|
]
|
|
}
|
|
};
|
|
|
|
gulp.src('./example/demo.js')
|
|
.pipe($.plumber({errorHandler: _errrHandler}))
|
|
.pipe(named(function() {
|
|
return 'demo-src';
|
|
}))
|
|
.pipe(webpack(webpack_config))/*.pipe($.uglify())*/
|
|
.pipe(gulp.dest('./example'));
|
|
|
|
gulp.src('./example-2/demo.js')
|
|
.pipe($.plumber({errorHandler: _errrHandler}))
|
|
.pipe(named(function() {
|
|
return 'demo-src';
|
|
}))
|
|
.pipe(webpack(webpack_config))/*.pipe($.uglify())*/
|
|
.pipe(gulp.dest('./example-2'));
|
|
});
|
|
|
|
gulp.task('serve', function() {
|
|
browserSync.init({
|
|
server: {
|
|
baseDir: './'
|
|
}
|
|
});
|
|
gulp.watch([
|
|
'./example-2/demo.js','./example/demo.js', './*.vue', './*.css'
|
|
], ['js']);
|
|
gulp.watch(['./scss/*.scss'], ['css']);
|
|
gulp.watch([
|
|
'./example/**/*.html', './example/demo-src.js', './example-2/**/*.html', './example-2/demo-src.js'
|
|
], function() {
|
|
reload();
|
|
});
|
|
});
|
|
|
|
gulp.task('default', ['serve']);
|
|
|
|
/** 辅助函数
|
|
-------------------------------------------------------------*/
|
|
//错误提示
|
|
function _errrHandler(e) {
|
|
$.util.beep();
|
|
$.util.log(e);
|
|
}
|