1 | var growl = require('growl')
|
2 | var serve = require('gulp-live-serve')
|
3 | var livereload = require('gulp-livereload')
|
4 | var webpack = require('webpack')
|
5 | var WebpackDevServer = require('webpack-dev-server')
|
6 | var gutil = require('gulp-util')
|
7 | var gulp = require('gulp')
|
8 | var path = require('path')
|
9 | var config = require('./webpack.config')
|
10 |
|
11 | var testIndex = './test/test.js'
|
12 |
|
13 | var port = 8080
|
14 |
|
15 | var myConfig = Object.assign({}, config, {
|
16 | devtool: 'sourcemap',
|
17 | debug: true
|
18 | })
|
19 |
|
20 | var paths = {
|
21 |
|
22 | scripts: ['style.css', 'template.html','index.js', 'example/index.js'],
|
23 |
|
24 | asserts: ['example/bundle.js', 'example/*.css', 'example/index.html']
|
25 | }
|
26 |
|
27 | gulp.task('default', ['build-dev'])
|
28 |
|
29 | gulp.task('build-dev', ['webpack:build-dev', 'serve'], function () {
|
30 | livereload.listen({
|
31 | start: true
|
32 | })
|
33 |
|
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 |
|
43 | gulp.task('serve', serve({
|
44 | root: __dirname,
|
45 | middlewares: []
|
46 | }))
|
47 |
|
48 |
|
49 | gulp.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)
|
53 | gutil.log('[webpack:build-dev]', stats.toString({
|
54 | colors: true
|
55 | }))
|
56 | callback()
|
57 | })
|
58 | })
|
59 |
|
60 | gulp.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 |
|
72 | config.plugins.push(new webpack.HotModuleReplacementPlugin())
|
73 |
|
74 | config.devtool = 'cheap-module-eval-source-map'
|
75 |
|
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 | })
|