【问题标题】:Bundle File size trouble with webPackwebPack的捆绑文件大小问题
【发布时间】:2017-02-02 01:31:33
【问题描述】:

在我的 react 应用程序中,我第一次使用“browserify”将 de es6 文件编译为 es5。但是当我检查捆绑文件的大小为 1.3mb(这么多)时,我的所有脚本文件夹都有 200kb。我认为,可能 browserify 包含多次相同的脚本。那是因为我有(例如)“Config.js”并且我将它包含在我需要的任何文件中 与

import Config from .'/config.js';

如果我不这样做,应用程序会显示错误,说明在该部分中请求该变量。然后我将我的管理从 browserify 更改为 webpack。我对此有所了解,因为一切对我来说都是新的,文档说 webpack 读取了我的依赖项并尝试包含一次任何文件。但是我的包文件大小一直是 1.3mb

这是我的 dummy webpack.config.js

var path = require('path');
var webpack = require('webpack');

module.exports = {
    entry: './js/src/index.js',
    output: { path: __dirname, filename: 'bundle.js' },
    module: {
        loaders: [
            {
                test: /.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules|libs/, //npm and bower_components(libs)

                query: {
                    presets: ['es2015', 'react']
                }
            }
        ]
    },
};

这是我的 package.json,在那里你可以看到我在尝试使用 webpack 之前执行的 browserify 命令(启动命令)。

   {
  "name": "appname",
  "version": "1.0.0",
  "description": "app description",
  "main": "js/dist/index.js",
  "dependencies": {
    "babelify": "^7.3.0",
    "browserify": "^13.1.1",
    "fetch": "^1.1.0",
    "owl.carousel": "^2.2.0",
    "react": "^15.4.2",
    "react-dom": "^15.4.2",
    "react-image-holder": "^2.0.1",
    "react-owl-carousel": "^0.14.0",
    "react-toastr": "^2.8.2",
    "whatwg-fetch": "^2.0.1"
  },
  "devDependencies": {
    "babel": "^6.5.2",
    "babel-cli": "^6.18.0",
    "babel-core": "^6.22.1",
    "babel-loader": "^6.2.10",
    "babel-plugin-external-helpers": "^6.18.0",
    "babel-plugin-transform-react-jsx": "^6.8.0",
    "babel-preset-env": "^1.1.5",
    "babel-preset-es2015": "^6.22.0",
    "babel-preset-es2017": "^6.16.0",
    "babel-preset-latest": "^6.16.0",
    "babel-preset-react": "^6.22.0",
    "babelify": "^7.3.0",
    "browserify": "^13.3.0",
    "envify": "^4.0.0",
    "gulp": "^3.9.1",
    "gulp-concat": "^2.6.1",
    "gulp-concat-css": "^2.3.0",
    "gulp-notify": "^3.0.0",
    "gulp-uglify": "^2.0.1",
    "gulp-uglifycss": "^1.0.6",
    "jquery": "^3.1.1",
    "jquery-ui": "^1.12.1",
    "react": "^15.4.2",
    "react-dom": "^15.4.2",
    "react-redux": "^5.0.1",
    "react-router": "^3.0.0",
    "react-router-redux": "^4.0.7",
    "redux": "^3.6.0",
    "uglify": "^0.1.5",
    "watchify": "^3.8.0",
    "webpack": "^1.14.0",
    "whatwg-fetch": "^2.0.1"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch-js": "NODE_ENV=production watchify assets/js/main.js -t babelify -t bulkify -o dist/js/app.js -v --full-path=false",
    "start": "set NODE_ENV=production && watchify js/src/index.js -v -t [babelify --presets [env] ] -o js/dist/index.js",
    "build": "browserify js/src/index.js -g [envify --NODE_ENV 'production'] -t [ babelify --presets [env] ]  -t  > js/dist/app.js"
  },
  "keywords": [
    "app",
    "jidapp"
  ]

【问题讨论】:

  • 没有node_modules中的依赖项是200kb吗?
  • 我的 .jsx 代码是 200kb 的洞文件夹,没有 babel 编译。那是我的应用程序代码。出于这个原因,我不明白为什么编译代码有那么大。

标签: npm webpack browserify


【解决方案1】:

您可以尝试在 webpack.config.js 中指定 devtool 设置。 以下是有关不同设置的作用的一些信息。 https://webpack.js.org/configuration/devtool/ 对于生产版本,我通常使用cheap-module-source-map。在开发中,我使用 eval。

var path = require('path');
var webpack = require('webpack');

module.exports = {
    devtool: 'cheap-module-source-map',
    entry: './js/src/index.js',
    output: { path: __dirname, filename: 'bundle.js' },
    module: {
      loaders: [
        {
         test: /.jsx?$/,
         loader: 'babel-loader',
         exclude: /node_modules|libs/, 
         query: {
           presets: ['es2015', 'react']
         }
       }
      ]
    },
};

你也可以在这里查看其他 webpack 优化插件。 https://github.com/webpack/docs/wiki/optimization

【讨论】:

  • 我说的。但编译文件的大小保持不变。我可以在 .map 文件中检查某些文件包含多次。 (有些文件 12 次或类似的文件)。绝对这是麻烦,但我不知道如何解决它。我尝试包含“new webpack.optimize.DedupePlugin()”但没有任何反应
  • 我不知道为什么有时我会发表评论,后来我发现我的评论不在此处。我进行了您向我推荐的更改,我可以在 .map 文件中看到某些文件多次出现。可以是重复捆绑文件上的代码吗?我尝试使用 optimize.DedupePlugin() 但没有任何反应。
猜你喜欢
  • 2017-08-04
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2017-09-19
  • 2019-08-24
相关资源
最近更新 更多