【发布时间】:2020-04-30 10:37:54
【问题描述】:
我构建了一个非常简单的教程项目,其中包含不超过 100-200 行代码。
当我使用 webpack 构建这个项目时,我最终得到了一个 bundle.js 文件,该文件被标记为高于 bundle.js 文件的推荐大小。我觉得这令人不安,因为我知道我的代码非常小。只使用 vuex、vue.js 和几个 node 模块之类的东西,结果却是这么大的 bundle.js,这是怎么回事?
我知道它会为我们打包所有东西,但我很难相信,对于这么小的项目,webpack 无法将它缩小到更小的尺寸。我担心这可能与我在该项目根目录中拥有的大量节点模块有关。
所以我的问题是:webpack 构建是否完全取决于 /node_modules/ 文件夹下我的目录中的节点模块?如果没有,那么我的第一个 vue 项目是如何超过了 bundle.js 的推荐大小的?
这给我带来了另一个我一直很不确定的问题:vue 从我的根用户目录复制几乎我的整个 node_modules 目录是否正常?当我观看教程时,“vue create My_App”命令似乎在不超过 10-20 秒内完成执行,但是当我运行该命令时可能需要几分钟。当我想知道它可能是什么时,我看到它复制了数百个 node_modules ......这完全有必要吗?是否有我应该设置或更改但我错过的配置或设置?
感谢大家提供的任何见解,无论大小。
// webpack.config.js
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
entry: './src/main.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '/dist/'
},
mode: 'development',
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
// this will apply to both plain `.js` files
// AND `<script>` blocks in `.vue` files
{
test: /\.js$/,
loader: 'babel-loader'
},
// this will apply to both plain `.css` files
// AND `<style>` blocks in `.vue` files
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
]
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js'
}
},
plugins: [
// make sure to include the plugin for the magic
new VueLoaderPlugin(),
],
optimization: {
minimizer: [new UglifyJsPlugin()],
},
};
【问题讨论】:
-
这可能在Vue.js forums 上问得更好,因为它并不真正属于 SO
-
你至少需要分享你的 webpack 配置。
-
显然 webpack 的构建依赖于你使用的 node_modules。最终构建中实际包含的内容取决于很多事情。
-
@AlexanderStaroselsky 我已经用我的 webpack.config.js 文件更新了它......谢谢你指出这一点。
-
@user1538301 我也去Vue.js论坛问问,谢谢!
标签: javascript node.js vue.js webpack vuejs2