很明显为什么你的包超过 400kb,你正在导入 lodash 和 jquery,你只是缺少 moment.js(一个小玩笑),但你可以做的一件事就是只使用你需要的东西.
首先,如果您使用的是 Vue、React 或任何这些 jQuery UI 库,除非必要,否则您不应该使用 jQuery。
你可以做的另一件事是只导入你需要的东西,而不是:
import { map } from 'lodash';
试试
import map from 'lodash/map';
甚至更好
import map from 'lodash.map';
https://www.npmjs.com/package/lodash.map
懒惰的导入,阅读更多here。这将允许将您的捆绑包拆分为可以在执行时调用的部分,从而大大减少您的应用程序大小。
const Foo = () => import('./Foo.vue')
还有 SSR(服务器端渲染),它基本上是在构建时生成应用程序的初始 HTML 代码并渲染输出,以向用户显示网站上有东西,但您还需要了解,这不会有太大作用,因为浏览器需要解析 Javascript 代码(水化过程)才能使网站正常运行。
如果您在 2021 年 4 月使用 React,React 团队宣布了 React Server Components,这似乎是一件大事,我认为许多其他库会将组件移动到服务器(我希望 Vue 会这样做) .
从今天起再次不要在生产中使用它。
其他答案提到了webpack-bundle-analyzer的使用,这里有一个技巧如何使用它:
webpack.config.js
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const analyzing = process.env.NODE_ENV === 'analyze';
module.exports = {
plugin: [
...(analyzing ? [new BundleAnalyzerPlugin()] : [])
]
}
在你的 package.json
{
"scripts": {
"analyze": "NODE_ENV=analyze webpack build"
}
}