fix(build): tree shaking (#8088)

This commit is contained in:
三咲智子
2022-06-04 22:12:38 +08:00
committed by GitHub
parent 4662a37bbe
commit 1435581c0c
6 changed files with 48 additions and 40 deletions

View File

@ -10,7 +10,7 @@
},
"dependencies": {
"@docsearch/js": "^3.0.0",
"@element-plus/icons-vue": "^2.0.3",
"@element-plus/icons-vue": "^2.0.5",
"@element-plus/metadata": "workspace:*",
"@vue/shared": "^3.2.33",
"@vueuse/core": "^8.5.0",

View File

@ -5,7 +5,7 @@ import commonjs from '@rollup/plugin-commonjs'
import vue from '@vitejs/plugin-vue'
import DefineOptions from 'unplugin-vue-define-options/rollup'
import vueJsx from '@vitejs/plugin-vue-jsx'
import esbuild from 'rollup-plugin-esbuild'
import esbuild, { minify as minifyPlugin } from 'rollup-plugin-esbuild'
import { parallel } from 'gulp'
import glob from 'fast-glob'
import { camelCase, upperFirst } from 'lodash'
@ -24,37 +24,45 @@ import {
writeBundles,
} from '../utils'
import { target } from '../build-info'
import type { Plugin } from 'rollup'
const banner = `/*! ${PKG_BRAND_NAME} v${version} */\n`
async function buildFullEntry(minify: boolean) {
const plugins: Plugin[] = [
ElementPlusAlias(),
DefineOptions(),
vue({
isProduction: true,
}),
vueJsx(),
nodeResolve({
extensions: ['.mjs', '.js', '.json', '.ts'],
}),
commonjs(),
esbuild({
exclude: [],
sourceMap: minify,
target,
loaders: {
'.vue': 'ts',
},
define: {
'process.env.NODE_ENV': JSON.stringify('production'),
},
treeShaking: true,
legalComments: 'eof',
}),
]
if (minify) {
plugins.push(minifyPlugin({ sourceMap: true }))
}
const bundle = await rollup({
input: path.resolve(epRoot, 'index.ts'),
plugins: [
ElementPlusAlias(),
DefineOptions(),
vue({
isProduction: true,
}),
vueJsx(),
nodeResolve({
extensions: ['.mjs', '.js', '.json', '.ts'],
}),
commonjs(),
esbuild({
exclude: [],
minify,
sourceMap: minify,
target,
loaders: {
'.vue': 'ts',
},
define: {
'process.env.NODE_ENV': JSON.stringify('production'),
},
}),
],
plugins,
external: await generateExternal({ full: true }),
treeshake: true,
})
await writeBundles(bundle, [
{

View File

@ -48,7 +48,7 @@
"@element-plus/constants": "workspace:*",
"@element-plus/directives": "workspace:*",
"@element-plus/hooks": "workspace:*",
"@element-plus/icons-vue": "^2.0.3",
"@element-plus/icons-vue": "^2.0.5",
"@element-plus/locale": "workspace:*",
"@element-plus/test-utils": "workspace:*",
"@element-plus/theme-chalk": "workspace:*",

View File

@ -52,7 +52,7 @@
},
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.3",
"@element-plus/icons-vue": "^2.0.5",
"@floating-ui/dom": "^0.5.0",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182",

View File

@ -7,7 +7,7 @@
"preview": "vite preview"
},
"dependencies": {
"@element-plus/icons-vue": "^2.0.3",
"@element-plus/icons-vue": "^2.0.5",
"vue": "^3.2.33"
},
"devDependencies": {

22
pnpm-lock.yaml generated
View File

@ -13,7 +13,7 @@ importers:
'@element-plus/directives': workspace:*
'@element-plus/eslint-config': workspace:*
'@element-plus/hooks': workspace:*
'@element-plus/icons-vue': ^2.0.3
'@element-plus/icons-vue': ^2.0.5
'@element-plus/locale': workspace:*
'@element-plus/test-utils': workspace:*
'@element-plus/theme-chalk': workspace:*
@ -80,7 +80,7 @@ importers:
'@element-plus/constants': link:packages/constants
'@element-plus/directives': link:packages/directives
'@element-plus/hooks': link:packages/hooks
'@element-plus/icons-vue': 2.0.3_vue@3.2.33
'@element-plus/icons-vue': 2.0.5_vue@3.2.33
'@element-plus/locale': link:packages/locale
'@element-plus/test-utils': link:packages/test-utils
'@element-plus/theme-chalk': link:packages/theme-chalk
@ -157,7 +157,7 @@ importers:
'@element-plus/build': workspace:*
'@element-plus/build-constants': workspace:*
'@element-plus/build-utils': workspace:*
'@element-plus/icons-vue': ^2.0.3
'@element-plus/icons-vue': ^2.0.5
'@element-plus/metadata': workspace:*
'@iconify-json/ri': ^1.1.1
'@types/markdown-it': ^12.2.3
@ -191,7 +191,7 @@ importers:
vue: ^3.2.33
dependencies:
'@docsearch/js': 3.0.0
'@element-plus/icons-vue': 2.0.3_vue@3.2.33
'@element-plus/icons-vue': 2.0.5_vue@3.2.33
'@element-plus/metadata': link:../internal/metadata
'@vue/shared': 3.2.33
'@vueuse/core': 8.5.0_vue@3.2.33
@ -377,7 +377,7 @@ importers:
packages/element-plus:
specifiers:
'@ctrl/tinycolor': ^3.4.1
'@element-plus/icons-vue': ^2.0.3
'@element-plus/icons-vue': ^2.0.5
'@floating-ui/dom': ^0.5.0
'@popperjs/core': npm:@sxzz/popperjs-es@^2.11.7
'@types/lodash': ^4.14.182
@ -397,7 +397,7 @@ importers:
vue-router: ^4.0.15
dependencies:
'@ctrl/tinycolor': 3.4.1
'@element-plus/icons-vue': 2.0.3_vue@3.2.33
'@element-plus/icons-vue': 2.0.5_vue@3.2.33
'@floating-ui/dom': 0.5.0
'@popperjs/core': /@sxzz/popperjs-es/2.11.7
'@types/lodash': 4.14.182
@ -458,7 +458,7 @@ importers:
play:
specifiers:
'@element-plus/icons-vue': ^2.0.3
'@element-plus/icons-vue': ^2.0.5
'@vitejs/plugin-vue': ^2.3.3
unplugin-vue-components: ^0.19.5
vite: ^2.9.9
@ -466,7 +466,7 @@ importers:
vite-plugin-mkcert: ^1.6.0
vue: ^3.2.33
dependencies:
'@element-plus/icons-vue': 2.0.3_vue@3.2.33
'@element-plus/icons-vue': 2.0.5_vue@3.2.33
vue: 3.2.33
devDependencies:
'@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.33
@ -1971,8 +1971,8 @@ packages:
vue: 3.2.33
dev: false
/@element-plus/icons-vue/2.0.3_vue@3.2.33:
resolution: {integrity: sha512-dI9hazWIJF5AXsFDWLsdGqVIQMJ5Kq70fw1RScuMW6+UNqfJpRYFOqhya8RHpjajIZZnQx260Ll9AjTcu2HSOA==}
/@element-plus/icons-vue/2.0.5_vue@3.2.33:
resolution: {integrity: sha512-jvNWyKcdvPvMDLTWjghrPY+bYHKqh7hbAFIPe+HWR073zilzt33csREzmKx3VwhdlJUW5u0nCqN+0rwI8jlH+w==}
peerDependencies:
vue: ^3.2.0
dependencies:
@ -8063,7 +8063,7 @@ packages:
dev: true
/lodash.sortby/4.7.0:
resolution: {integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=}
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
dev: true
/lodash/4.17.21: