mirror of
https://github.com/element-plus/element-plus.git
synced 2025-08-26 12:32:17 +08:00
fix(build): tree shaking (#8088)
This commit is contained in:
@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docsearch/js": "^3.0.0",
|
"@docsearch/js": "^3.0.0",
|
||||||
"@element-plus/icons-vue": "^2.0.3",
|
"@element-plus/icons-vue": "^2.0.5",
|
||||||
"@element-plus/metadata": "workspace:*",
|
"@element-plus/metadata": "workspace:*",
|
||||||
"@vue/shared": "^3.2.33",
|
"@vue/shared": "^3.2.33",
|
||||||
"@vueuse/core": "^8.5.0",
|
"@vueuse/core": "^8.5.0",
|
||||||
|
@ -5,7 +5,7 @@ import commonjs from '@rollup/plugin-commonjs'
|
|||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
import DefineOptions from 'unplugin-vue-define-options/rollup'
|
import DefineOptions from 'unplugin-vue-define-options/rollup'
|
||||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
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 { parallel } from 'gulp'
|
||||||
import glob from 'fast-glob'
|
import glob from 'fast-glob'
|
||||||
import { camelCase, upperFirst } from 'lodash'
|
import { camelCase, upperFirst } from 'lodash'
|
||||||
@ -24,37 +24,45 @@ import {
|
|||||||
writeBundles,
|
writeBundles,
|
||||||
} from '../utils'
|
} from '../utils'
|
||||||
import { target } from '../build-info'
|
import { target } from '../build-info'
|
||||||
|
import type { Plugin } from 'rollup'
|
||||||
|
|
||||||
const banner = `/*! ${PKG_BRAND_NAME} v${version} */\n`
|
const banner = `/*! ${PKG_BRAND_NAME} v${version} */\n`
|
||||||
|
|
||||||
async function buildFullEntry(minify: boolean) {
|
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({
|
const bundle = await rollup({
|
||||||
input: path.resolve(epRoot, 'index.ts'),
|
input: path.resolve(epRoot, 'index.ts'),
|
||||||
plugins: [
|
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'),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
external: await generateExternal({ full: true }),
|
external: await generateExternal({ full: true }),
|
||||||
|
treeshake: true,
|
||||||
})
|
})
|
||||||
await writeBundles(bundle, [
|
await writeBundles(bundle, [
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
"@element-plus/constants": "workspace:*",
|
"@element-plus/constants": "workspace:*",
|
||||||
"@element-plus/directives": "workspace:*",
|
"@element-plus/directives": "workspace:*",
|
||||||
"@element-plus/hooks": "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/locale": "workspace:*",
|
||||||
"@element-plus/test-utils": "workspace:*",
|
"@element-plus/test-utils": "workspace:*",
|
||||||
"@element-plus/theme-chalk": "workspace:*",
|
"@element-plus/theme-chalk": "workspace:*",
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ctrl/tinycolor": "^3.4.1",
|
"@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",
|
"@floating-ui/dom": "^0.5.0",
|
||||||
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
|
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
|
||||||
"@types/lodash": "^4.14.182",
|
"@types/lodash": "^4.14.182",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.0.3",
|
"@element-plus/icons-vue": "^2.0.5",
|
||||||
"vue": "^3.2.33"
|
"vue": "^3.2.33"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
22
pnpm-lock.yaml
generated
22
pnpm-lock.yaml
generated
@ -13,7 +13,7 @@ importers:
|
|||||||
'@element-plus/directives': workspace:*
|
'@element-plus/directives': workspace:*
|
||||||
'@element-plus/eslint-config': workspace:*
|
'@element-plus/eslint-config': workspace:*
|
||||||
'@element-plus/hooks': 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/locale': workspace:*
|
||||||
'@element-plus/test-utils': workspace:*
|
'@element-plus/test-utils': workspace:*
|
||||||
'@element-plus/theme-chalk': workspace:*
|
'@element-plus/theme-chalk': workspace:*
|
||||||
@ -80,7 +80,7 @@ importers:
|
|||||||
'@element-plus/constants': link:packages/constants
|
'@element-plus/constants': link:packages/constants
|
||||||
'@element-plus/directives': link:packages/directives
|
'@element-plus/directives': link:packages/directives
|
||||||
'@element-plus/hooks': link:packages/hooks
|
'@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/locale': link:packages/locale
|
||||||
'@element-plus/test-utils': link:packages/test-utils
|
'@element-plus/test-utils': link:packages/test-utils
|
||||||
'@element-plus/theme-chalk': link:packages/theme-chalk
|
'@element-plus/theme-chalk': link:packages/theme-chalk
|
||||||
@ -157,7 +157,7 @@ importers:
|
|||||||
'@element-plus/build': workspace:*
|
'@element-plus/build': workspace:*
|
||||||
'@element-plus/build-constants': workspace:*
|
'@element-plus/build-constants': workspace:*
|
||||||
'@element-plus/build-utils': workspace:*
|
'@element-plus/build-utils': workspace:*
|
||||||
'@element-plus/icons-vue': ^2.0.3
|
'@element-plus/icons-vue': ^2.0.5
|
||||||
'@element-plus/metadata': workspace:*
|
'@element-plus/metadata': workspace:*
|
||||||
'@iconify-json/ri': ^1.1.1
|
'@iconify-json/ri': ^1.1.1
|
||||||
'@types/markdown-it': ^12.2.3
|
'@types/markdown-it': ^12.2.3
|
||||||
@ -191,7 +191,7 @@ importers:
|
|||||||
vue: ^3.2.33
|
vue: ^3.2.33
|
||||||
dependencies:
|
dependencies:
|
||||||
'@docsearch/js': 3.0.0
|
'@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
|
'@element-plus/metadata': link:../internal/metadata
|
||||||
'@vue/shared': 3.2.33
|
'@vue/shared': 3.2.33
|
||||||
'@vueuse/core': 8.5.0_vue@3.2.33
|
'@vueuse/core': 8.5.0_vue@3.2.33
|
||||||
@ -377,7 +377,7 @@ importers:
|
|||||||
packages/element-plus:
|
packages/element-plus:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@ctrl/tinycolor': ^3.4.1
|
'@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
|
'@floating-ui/dom': ^0.5.0
|
||||||
'@popperjs/core': npm:@sxzz/popperjs-es@^2.11.7
|
'@popperjs/core': npm:@sxzz/popperjs-es@^2.11.7
|
||||||
'@types/lodash': ^4.14.182
|
'@types/lodash': ^4.14.182
|
||||||
@ -397,7 +397,7 @@ importers:
|
|||||||
vue-router: ^4.0.15
|
vue-router: ^4.0.15
|
||||||
dependencies:
|
dependencies:
|
||||||
'@ctrl/tinycolor': 3.4.1
|
'@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
|
'@floating-ui/dom': 0.5.0
|
||||||
'@popperjs/core': /@sxzz/popperjs-es/2.11.7
|
'@popperjs/core': /@sxzz/popperjs-es/2.11.7
|
||||||
'@types/lodash': 4.14.182
|
'@types/lodash': 4.14.182
|
||||||
@ -458,7 +458,7 @@ importers:
|
|||||||
|
|
||||||
play:
|
play:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@element-plus/icons-vue': ^2.0.3
|
'@element-plus/icons-vue': ^2.0.5
|
||||||
'@vitejs/plugin-vue': ^2.3.3
|
'@vitejs/plugin-vue': ^2.3.3
|
||||||
unplugin-vue-components: ^0.19.5
|
unplugin-vue-components: ^0.19.5
|
||||||
vite: ^2.9.9
|
vite: ^2.9.9
|
||||||
@ -466,7 +466,7 @@ importers:
|
|||||||
vite-plugin-mkcert: ^1.6.0
|
vite-plugin-mkcert: ^1.6.0
|
||||||
vue: ^3.2.33
|
vue: ^3.2.33
|
||||||
dependencies:
|
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
|
vue: 3.2.33
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.33
|
'@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.33
|
||||||
@ -1971,8 +1971,8 @@ packages:
|
|||||||
vue: 3.2.33
|
vue: 3.2.33
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@element-plus/icons-vue/2.0.3_vue@3.2.33:
|
/@element-plus/icons-vue/2.0.5_vue@3.2.33:
|
||||||
resolution: {integrity: sha512-dI9hazWIJF5AXsFDWLsdGqVIQMJ5Kq70fw1RScuMW6+UNqfJpRYFOqhya8RHpjajIZZnQx260Ll9AjTcu2HSOA==}
|
resolution: {integrity: sha512-jvNWyKcdvPvMDLTWjghrPY+bYHKqh7hbAFIPe+HWR073zilzt33csREzmKx3VwhdlJUW5u0nCqN+0rwI8jlH+w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -8063,7 +8063,7 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/lodash.sortby/4.7.0:
|
/lodash.sortby/4.7.0:
|
||||||
resolution: {integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=}
|
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/lodash/4.17.21:
|
/lodash/4.17.21:
|
||||||
|
Reference in New Issue
Block a user