|
1 | 1 | // Gulp
|
2 |
| -const gulp = require('gulp'); |
3 |
| -const plumber = require('gulp-plumber'); |
4 |
| -const file = require('gulp-file'); |
5 |
| -const filter = require('gulp-filter'); |
6 |
| -const merge = require('merge-stream'); |
7 |
| -const uglify = require('gulp-uglify'); |
8 |
| -const clean = require('gulp-clean'); |
9 |
| -const commonjs = require('@rollup/plugin-commonjs') |
| 2 | +const gulp = require('gulp') |
| 3 | +const plumber = require('gulp-plumber') |
| 4 | +const file = require('gulp-file') |
| 5 | +const filter = require('gulp-filter') |
| 6 | +const uglify = require('gulp-uglify') |
| 7 | +const clean = require('gulp-clean') |
10 | 8 |
|
11 | 9 | // Rollup
|
12 |
| -const { rollup } = require('rollup'); |
13 |
| -const babel = require('rollup-plugin-babel'); |
| 10 | +const { rollup } = require('rollup') |
14 | 11 | const { nodeResolve } = require('@rollup/plugin-node-resolve')
|
15 |
| - |
| 12 | +const { getBabelOutputPlugin } = require('@rollup/plugin-babel') |
16 | 13 | // Const
|
17 |
| -const buildPath = 'dist/'; |
| 14 | +const buildPath = 'dist/' |
18 | 15 |
|
19 | 16 | /**
|
20 | 17 | * Generate scripts with commonjs module
|
21 | 18 | * @param {import('rollup').RollupBuild} bundle
|
22 | 19 | */
|
23 |
| -function bundleCommonJs(bundle) { |
24 |
| - return bundle.generate({ |
25 |
| - format: 'umd', |
26 |
| - name: 'VueAxios' |
27 |
| - }); |
28 |
| -} |
29 | 20 |
|
30 | 21 | /**
|
31 | 22 | * Bundle index.js using rollup + babel
|
32 | 23 | */
|
33 |
| -async function bundle() { |
| 24 | +async function bundle(name, format) { |
34 | 25 | const bundle = await rollup({
|
35 | 26 | input: 'src/index.js',
|
36 | 27 | plugins: [
|
37 | 28 | nodeResolve({ browser: true }),
|
38 |
| - commonjs(), |
39 |
| - babel({ |
40 |
| - presets: [ |
41 |
| - ["@babel/env"] |
42 |
| - ], |
43 |
| - sourceMaps: true |
44 |
| - }) |
45 |
| - ] |
46 |
| - }); |
47 |
| - return bundleCommonJs(bundle); |
| 29 | + getBabelOutputPlugin({ |
| 30 | + allowAllFormats: true, |
| 31 | + presets: [['@babel/preset-env', { modules: 'auto' }]], |
| 32 | + // sourceMaps: true, |
| 33 | + }), |
| 34 | + ], |
| 35 | + }) |
| 36 | + return bundle.generate({ |
| 37 | + format: format, |
| 38 | + name: name, |
| 39 | + }) |
48 | 40 | }
|
49 | 41 |
|
50 | 42 | gulp.task('build', async function () {
|
51 |
| - const generatedBundle = await bundle(); |
52 |
| - const f = filter(['*', '!**/*.js.map',], { restore: true }); |
53 |
| - const data = ['vue-axios.es5.js', 'vue-axios.min.js']; |
54 |
| - const streams = data.map((name) => { |
55 |
| - return file(name, generatedBundle.output.map(o => o.code).join(" "), { src: true }) |
56 |
| - .pipe(plumber()) |
57 |
| - .pipe(f) |
58 |
| - .pipe(uglify()) |
59 |
| - .pipe(gulp.dest(buildPath)); |
60 |
| - }); |
| 43 | + const esmbundle = await bundle('VueAxios', 'esm') |
| 44 | + const commonbundle = await bundle('VueAxios', 'umd') |
| 45 | + const f = filter(['*', '!**/*.js.map'], { restore: true }) |
| 46 | + const data = { |
| 47 | + 'vue-axios.common.min.js': commonbundle, |
| 48 | + 'vue-axios.esm.min.js': esmbundle, |
| 49 | + } |
61 | 50 |
|
62 |
| - return merge(streams); |
63 |
| -}); |
| 51 | + for (const [name, bundle] of Object.entries(data)) { |
| 52 | + file(name, bundle.output.map((o) => o.code).join(' '), { |
| 53 | + src: true, |
| 54 | + }) |
| 55 | + .pipe(plumber()) |
| 56 | + .pipe(f) |
| 57 | + .pipe(uglify()) |
| 58 | + .pipe(gulp.dest(buildPath)) |
| 59 | + } |
| 60 | +}) |
64 | 61 |
|
65 | 62 | gulp.task('clean', function () {
|
66 |
| - return gulp.src('dist/*').pipe(clean({ |
67 |
| - force: true |
68 |
| - })); |
| 63 | + return gulp.src('dist/*').pipe( |
| 64 | + clean({ |
| 65 | + force: true, |
| 66 | + }), |
| 67 | + ) |
69 | 68 | })
|
70 | 69 |
|
71 | 70 | gulp.task('default', gulp.series('clean', 'build'))
|
0 commit comments