Skip to content

Commit 828c7b3

Browse files
authored
Merge pull request #105 from hotrungnhan/esmbuild
Update esm build
2 parents c436c9e + b177474 commit 828c7b3

File tree

12 files changed

+9666
-722
lines changed

12 files changed

+9666
-722
lines changed

Gulpfile.js

+43-44
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,70 @@
11
// 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')
108

119
// Rollup
12-
const { rollup } = require('rollup');
13-
const babel = require('rollup-plugin-babel');
10+
const { rollup } = require('rollup')
1411
const { nodeResolve } = require('@rollup/plugin-node-resolve')
15-
12+
const { getBabelOutputPlugin } = require('@rollup/plugin-babel')
1613
// Const
17-
const buildPath = 'dist/';
14+
const buildPath = 'dist/'
1815

1916
/**
2017
* Generate scripts with commonjs module
2118
* @param {import('rollup').RollupBuild} bundle
2219
*/
23-
function bundleCommonJs(bundle) {
24-
return bundle.generate({
25-
format: 'umd',
26-
name: 'VueAxios'
27-
});
28-
}
2920

3021
/**
3122
* Bundle index.js using rollup + babel
3223
*/
33-
async function bundle() {
24+
async function bundle(name, format) {
3425
const bundle = await rollup({
3526
input: 'src/index.js',
3627
plugins: [
3728
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+
})
4840
}
4941

5042
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+
}
6150

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+
})
6461

6562
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+
)
6968
})
7069

7170
gulp.task('default', gulp.series('clean', 'build'))

examples/vue2/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
2121
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js"></script>
22-
<script src="../../dist/vue-axios.min.js"></script>
22+
<script src="../../dist/vue-axios.common.min.js"></script>
2323

2424
<script type="module">
2525
new Vue({

examples/vue3-build/.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.DS_Store
2+
node_modules
3+
/dist
4+
5+
6+
# local env files
7+
.env.local
8+
.env.*.local
9+
10+
# Log files
11+
npm-debug.log*
12+
yarn-debug.log*
13+
yarn-error.log*
14+
pnpm-debug.log*
15+
16+
# Editor directories and files
17+
.idea
18+
.vscode
19+
*.suo
20+
*.ntvs*
21+
*.njsproj
22+
*.sln
23+
*.sw?

examples/vue3-build/README.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# vue3-build
2+
build empty vue project to check build size
3+
## run build report to check build size
4+
```
5+
yarn build:report
6+
npm run build:report
7+
```
8+
and open report.html in dist file and then find vue-axios

examples/vue3-build/babel.config.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
presets: [
3+
'@vue/cli-plugin-babel/preset'
4+
]
5+
}

examples/vue3-build/package.json

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "vue3-build",
3+
"version": "0.1.0",
4+
"private": true,
5+
"scripts": {
6+
"serve": "vue-cli-service serve",
7+
"build": "vue-cli-service build",
8+
"build:report": "vue-cli-service build --report"
9+
},
10+
"dependencies": {
11+
"axios": "^0.21.3",
12+
"core-js": "^3.6.5",
13+
"vue": "^3.0.0"
14+
},
15+
"devDependencies": {
16+
"@vue/cli-plugin-babel": "~4.5.0",
17+
"@vue/cli-service": "~4.5.0",
18+
"@vue/compiler-sfc": "^3.0.0"
19+
},
20+
"browserslist": [
21+
"> 1%",
22+
"last 2 versions",
23+
"not dead"
24+
]
25+
}

examples/vue3-build/src/main.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { createApp } from 'vue'
2+
import Vueaxios from '../../../dist/vue-axios.esm.min'
3+
import axios from 'axios'
4+
createApp(App).use(Vueaxios, axios).mount('#app')

0 commit comments

Comments
 (0)