UNPKG

2.38 kBJavaScriptView Raw
1var growl = require('growl')
2var serve = require('gulp-live-serve')
3var livereload = require('gulp-livereload')
4var webpack = require('webpack')
5var WebpackDevServer = require('webpack-dev-server')
6var gutil = require('gulp-util')
7var gulp = require('gulp')
8var path = require('path')
9var config = require('./webpack.config')
10// test entry file
11var testIndex = './test/test.js'
12// webpack-dev-sserve port
13var port = 8080
14// no conflict
15var myConfig = Object.assign({}, config, {
16 devtool: 'sourcemap',
17 debug: true
18})
19
20var paths = {
21 // file list for webpack build
22 scripts: ['style.css', 'template.html','index.js', 'example/index.js'],
23 // file list for reload
24 asserts: ['example/bundle.js', 'example/*.css', 'example/index.html']
25}
26
27gulp.task('default', ['build-dev'])
28
29gulp.task('build-dev', ['webpack:build-dev', 'serve'], function () {
30 livereload.listen({
31 start: true
32 })
33 // build js files on change
34 gulp.watch(paths.scripts, ['webpack:build-dev'])
35 var watcher = gulp.watch(paths.asserts)
36 watcher.on('change', function (e) {
37 livereload.changed(e.path)
38 growl(path.basename(e.path))
39 })
40})
41
42// static server
43gulp.task('serve', serve({
44 root: __dirname,
45 middlewares: []
46}))
47
48
49gulp.task('webpack:build-dev', function (callback) {
50 var devCompiler = webpack(myConfig)
51 devCompiler.run(function (err, stats) {
52 if (err) throw new gutil.pluginError('webpack:build-dev', err) //eslint-disable-line
53 gutil.log('[webpack:build-dev]', stats.toString({
54 colors: true
55 }))
56 callback()
57 })
58})
59
60gulp.task('webpack:test', function (callback) {
61 var entry = [
62 'stack-source-map/register.js',
63 'webpack-dev-server/client?http://localhost:' + port,
64 'webpack/hot/dev-server',
65 'mocha!' + testIndex
66 ]
67
68 var config = Object.create(myConfig)
69 config.entry = entry
70 config.plugins = config.plugins || []
71 // webpack need this to send request to webpack-dev-server
72 config.plugins.push(new webpack.HotModuleReplacementPlugin())
73 // Get line of error in mocha
74 config.devtool = 'cheap-module-eval-source-map'
75 // must have
76 config.output.path = __dirname
77 var compiler = webpack(config)
78 config.module = myConfig.module
79 var server = new WebpackDevServer(compiler, {
80 publicPath: '/',
81 inline: true,
82 historyApiFallback: false,
83 stats: { colors: true }
84 })
85 server.listen(port, 'localhost', callback)
86})