为什么我的webpack bundle.js和vendor.bundle.js这么大?

尔瓦祖

我所有的React项目的文件大小通常都非常大(bundle.js为4.87 mb,vendor.bundle.js为2.87 mb)。我不知道为什么这么大。我已经启用了uglifyJS,但这似乎没有太大帮助(5.09> 4.87mb和2.9> 2.87mb)

var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

require('es6-promise').polyfill();

var config = {
  entry: {
    app: [
      './src/entry.jsx'
    ],
    vendor: [
      'react',
      'lodash',
      'superagent'
    ]
  },
  output: {
    path: './build',
    filename: "bundle.js"
  },
  eslint: {
    configFile: './.eslintrc'
  },
  devtool: 'eval-source-map',
  module: {
    loaders: [
      { test: /\.(js|jsx)$/, loaders: ['react-hot', 'babel?experimental'], exclude: /node_modules/},
      { test: /\.(js|jsx)$/, loader: "eslint-loader", exclude: /node_modules/},
      { test: /\.json$/, loader: 'json' },
      { test: /\.yml$/, loader: 'json!yaml' },
      { test: /\.scss$/, loader: 'style!css!sass' },
      { test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' }
    ]
  },
  plugins: [
    new webpack.DefinePlugin({'process.env': {'NODE_ENV': JSON.stringify('production')}}),
    new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.bundle.js"),
    new webpack.optimize.UglifyJsPlugin({minimize: true}),
    new webpack.NoErrorsPlugin()
  ]
};

module.exports = config;

我的package.json

{
  "license": "MIT",
  "engines": {
    "iojs": ">= 1.6.2"
  },
  "scripts": {
    "create:index": "mustang -t index.tmpl -i config.json -o build/index.html",
    "predev": "mkdir -p build/ && npm run create:index",
    "dev": "webpack-dev-server --host 0.0.0.0 --hot --progress --colors --content-base build",
    "backend": "NODE_ENV=production node server/server.js",
    "backend:dev": "DEBUG=tinderlicht node server/server.js",
    "predeploy": "mkdir -p build/ && npm run create:index",
    "deploy": "NODE_ENV=production webpack -p",
    "test": "node webpack-mocha.config.js"
  },
  "devDependencies": {
    "autoprefixer-loader": "^3.2.0",
    "axios": "^0.7.0",
    "babel": "^5.8.23",
    "babel-core": "^5.8.25",
    "babel-eslint": "^4.1.3",
    "babel-loader": "^5.3.2",
    "bluebird": "^2.10.2",
    "css-loader": "^0.19.0",
    "es6-collections": "^0.5.1",
    "es6-promise": "^3.0.2",
    "eslint": "^1.6.0",
    "eslint-loader": "^1.1.0",
    "eslint-plugin-react": "^3.5.1",
    "extract-text-webpack-plugin": "^0.8.2",
    "file-loader": "^0.8.1",
    "firebase": "^2.3.1",
    "fireproof": "^3.0.3",
    "jquery": "^2.2.0",
    "json-loader": "^0.5.1",
    "jsonld": "^0.4.2",
    "jsx-loader": "^0.13.2",
    "lodash": "^3.3.0",
    "mustang": "^0.1.3",
    "node-sass": "^3.3.3",
    "react": "^0.14.0",
    "react-dom": "^0.14.0",
    "react-hot-loader": "^1.1.5",
    "sass-loader": "3.0.0",
    "style-loader": "^0.12.4",
    "superagent": "^1.4.0",
    "url-loader": "^0.5.5",
    "webpack": "^1.5.3",
    "webpack-dev-server": "^1.7.0"
  },
  "dependencies": {
    "body-parser": "^1.15.0",
    "cors": "^2.7.1",
    "debug": "^2.2.0",
    "express": "^4.13.4",
    "mustache": "^2.2.1",
    "nodemailer": "^2.1.0",
    "nodemailer-sendmail-transport": "^1.0.0",
    "react-radio-group": "^2.2.0",
    "uglifyjs": "^2.4.10"
  }
}

有谁知道如何解决这个问题?

维尼修斯·维埃拉(Vinicius Vieira)

编辑

我不确定您是在Mac / IO还是Windows上,但是我注意到了两点:

1:"deploy": "NODE_ENV=production webpack -p"看起来不正确,在构建用于开发和部署的变量时必须设置该变量,此处您无需设置。

2:您必须事先在终端/命令提示符下进行设置。

这里有一个Webpack最小化和部署的示例,您必须稍作调整,但是我想这会为您提供帮助。

您必须首先在comand提示符下为节点设置此环境变量,然后在Windows或Mac的终端中将其打开,然后:

Mac: export NODE_ENV=production

Windows: set NODE_ENV=production

您可以在Windows中回显或在Mac中列出以检查是否已添加变量。

然后在您的webpack.config.js中

    var PROD = process.env.NODE_ENV == 'production';
    var config = {
      entry: {
            app: [
          './src/entry.jsx'
        ],
        vendor: [
          'react',
          'lodash',
          'superagent'
        ],
         output: {
           path: './build',
           filename: PROD ? "bundle.min.js" : "bundle.js"
         },
         plugins: PROD ? [
              new webpack.optimize.UglifyJsPlugin({minimize: true}),
              new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.min.js'),
          ]:[
            new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
          ]
};

在您的package.json中,您可以设置以下脚本:

如果您使用的是Windows:

"scripts": {
         "dev": "set NODE_ENV=development&&webpack-dev-server --host 0.0.0.0 --hot --progress --colors --content-base build",
        "deploy": "set NODE_ENV=production&&webpack -p"
    }

如果您使用的是Mac IOS:如果导出在此处不起作用,请改用set,与Windows和Mac的区别是&&后的空格。

"scripts": {
         "dev": "export NODE_ENV=development&& webpack-dev-server --host 0.0.0.0 --hot --progress --colors --content-base build",
        "deploy": "export NODE_ENV=production&& webpack -p"
    }

使用comand npm run watch来构建开发,并使用npm run deploy来将其构建为最小版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到webpack bundle.js

来自分类Dev

Webpack:找不到bundle.js

来自分类Dev

React,Webpack:未生成bundle.js

来自分类Dev

Webpack 不生成 bundle.js

来自分类Dev

如何使用react和webpack生成bundle.js?

来自分类Dev

bundle.js文件输出和webpack-dev-server

来自分类Dev

使用webpack和gulp生成bundle.js

来自分类Dev

如何使用react和webpack生成bundle.js?

来自分类Dev

为什么我的函数不存在于bundle.js中?

来自分类Dev

为什么 bundle.js 在我的网页上停留在待处理状态?

来自分类Dev

从 Webpack bundle.js 获取/导入 bootstrap.js

来自分类Dev

找不到bundle.js

来自分类Dev

减少 bundle.js 的大小

来自分类Dev

如何服务于webpack构建的production react bundle.js?

来自分类Dev

Webpack / React / Spring Boot:使用https缓存bundle.js

来自分类Dev

找不到Webpack-dev-server Bundle.js

来自分类Dev

Webpack 2:如何从Bootstrap预制模板生成bundle.js?

来自分类Dev

Vue js 通过 Webpack 将 bundle 拆分成几个文件

来自分类Dev

我如何将“vue.js”添加到 webpack 的 bundle.js

来自分类Dev

我的 webpack.config.prod.js 文件没有生成 bundle.js 文件

来自分类Dev

Browserify bundle.js神秘化

来自分类Dev

Spa 找不到 bundle.js

来自分类Dev

vendor.bundle.js 是否包含在延迟加载模块中导入的库?

来自分类Dev

htaccess将缺少的bundle。*。js版本重定向到bundle.js文件

来自分类Dev

htaccess将缺少的bundle。*。js版本重定向到bundle.js文件

来自分类Dev

为什么`npm run bundle -- -p` (webpack -p) 不为我的 rails 应用程序编译资产?

来自分类Dev

使用webpack-dev-server时webpack构建中缺少bundle.js

来自分类Dev

webpack 2:来自UglifyJs的./public/bundle.js中出现错误意外字符'`'

来自分类Dev

未将Webpack与React-router bundle.js一起使用

Related 相关文章

  1. 1

    找不到webpack bundle.js

  2. 2

    Webpack:找不到bundle.js

  3. 3

    React,Webpack:未生成bundle.js

  4. 4

    Webpack 不生成 bundle.js

  5. 5

    如何使用react和webpack生成bundle.js?

  6. 6

    bundle.js文件输出和webpack-dev-server

  7. 7

    使用webpack和gulp生成bundle.js

  8. 8

    如何使用react和webpack生成bundle.js?

  9. 9

    为什么我的函数不存在于bundle.js中?

  10. 10

    为什么 bundle.js 在我的网页上停留在待处理状态?

  11. 11

    从 Webpack bundle.js 获取/导入 bootstrap.js

  12. 12

    找不到bundle.js

  13. 13

    减少 bundle.js 的大小

  14. 14

    如何服务于webpack构建的production react bundle.js?

  15. 15

    Webpack / React / Spring Boot:使用https缓存bundle.js

  16. 16

    找不到Webpack-dev-server Bundle.js

  17. 17

    Webpack 2:如何从Bootstrap预制模板生成bundle.js?

  18. 18

    Vue js 通过 Webpack 将 bundle 拆分成几个文件

  19. 19

    我如何将“vue.js”添加到 webpack 的 bundle.js

  20. 20

    我的 webpack.config.prod.js 文件没有生成 bundle.js 文件

  21. 21

    Browserify bundle.js神秘化

  22. 22

    Spa 找不到 bundle.js

  23. 23

    vendor.bundle.js 是否包含在延迟加载模块中导入的库?

  24. 24

    htaccess将缺少的bundle。*。js版本重定向到bundle.js文件

  25. 25

    htaccess将缺少的bundle。*。js版本重定向到bundle.js文件

  26. 26

    为什么`npm run bundle -- -p` (webpack -p) 不为我的 rails 应用程序编译资产?

  27. 27

    使用webpack-dev-server时webpack构建中缺少bundle.js

  28. 28

    webpack 2:来自UglifyJs的./public/bundle.js中出现错误意外字符'`'

  29. 29

    未将Webpack与React-router bundle.js一起使用

热门标签

归档