webpack manifest.js分割的一个错误

5 篇文章 0 订阅
2 篇文章 0 订阅

介绍

一个webpack打包的应用中,js代码可以分为三类:
* 团队或者个人编写的代码。
* 第三方代码,例如react、vue等。
* 运行时各个模块之间连接交互的代码。

看一个具体的配置

const webpack = require('webpack');
const CleanWebpackPlugin=require('clean-webpack-plugin');
const path=require('path');
const entries=require('./public/javascripts/getentries/merge.js')();
const fs=require('fs');
//get comoon module
entries['vendor']=['react','react-dom'];
entries['simplemde']=['simplemde'];

//server Exclude node_modules
var nodeModules = {};
fs.readdirSync('node_modules')
    .filter(function(x) {
        return ['.bin'].indexOf(x) === -1;
    })
    .forEach(function(mod) {
        nodeModules[mod] = 'commonjs ' + mod;
    });


const config=[{
        entry:entries,
        output:{
            path:path.resolve(__dirname,'public/javascripts/dist'),
            filename:'[name].js'
        },
         module: {
            rules: [
              {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                loader: 'babel-loader',
                query: {
                    plugins: ['transform-runtime'],
                    presets: ['es2015', 'stage-0','react'],
                }
              },
              {
                test:/\.css$/,
                use: [
                  { loader: "style-loader" },
                  { loader: "css-loader" },
                ]  
              },
              {
                test:'/\.(png|svg|jpg|gif)$/',
                use:[
                    'file-loader'
                ]

              }
            ]

         },
        plugins:[
            new CleanWebpackPlugin(['public/javascripts/dist']),
            new webpack.optimize.CommonsChunkPlugin({
                name:['vendor','simplemde','manifest']
            })
        ]
    },{
        entry:{
            server:'./public/javascripts/server/server.js'
        },
        target: "node",
        output:{
            path:path.resolve(__dirname,'public/javascripts/dist'),
            filename:'[name].js',
            library:'serverRender',
            libraryTarget: 'commonjs'
        },
        node: {
            console: true,
            global: true,
            process: true,
            Buffer: true,
            __filename: true,
            __dirname: true,
            setImmediate: true
        },
         module: {
            rules: [
              {
                test: /\.(js|jsx)$/,
                loader: 'babel-loader',
                exclude:/node_modules/,
                query: {
                    plugins: ['transform-runtime'],
                    presets: ['es2015', 'stage-0','react'],
                }
             }
            ]
         },
        externals:nodeModules
    }];

module.exports=config;

运行webpack其中会生成三类代码:
* 个人或团队应用代码。
* 三方代码,这里为 vendor.js,这里的配置将simplemde也单独提出来了,会生成一个simplemde.js,但是其也属于三方代码。
* manifest.js模块加载代码。

生成manifest.js注意点

做代码分割时,关键是如下语句,提出公共的部分(三方代码,模块加载代码manifest.js)

new webpack.optimize.CommonsChunkPlugin({
                name:['vendor','simplemde','manifest']
            })

此处manifest应该放在数组的最后如[‘vendor’,’simplemde’,’manifest’],不能写成[‘vendor’,’manifest’,’simplemde’],会导致的问题是不会生成manifest.js,原本manifest.js的代码被合并到simplemde.js中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在一个Vue项目中,常见的Webpack配置文件包括: 1. `webpack.base.config.js`:这是一个基础的Webpack配置文件,定义了通用的配置选项,例如入口文件、输出路径、模块解析规则等。它是不同环境配置文件的基础。 2. `webpack.dev.conf.js`:这是用于开发环境的Webpack配置文件。它会基于`webpack.base.config.js`进行扩展和覆盖,添加一些开发环境特定的配置选项,例如热重载、Source Maps等。 3. `webpack.prod.conf.js`:这是用于生产环境的Webpack配置文件。它同样会基于`webpack.base.config.js`进行扩展和覆盖,添加一些生产环境特定的配置选项,例如代码压缩、资源优化等。 4. `webpack.config.js`:在某些项目中,可能会使用单一的Webpack配置文件来同时处理开发环境和生产环境。这个文件会根据环境变量动态地配置Webpack。它可能会引入`webpack.base.config.js`并根据环境变量来扩展或覆盖一些配置选项。 5. `config/index.js`:这是一个存放项目全局配置的文件夹。其中的`index.js`文件包含了一些开发和生产环境的全局配置选项,例如服务器地址、端口号、是否开启热重载等。你可以在这个文件中进行自定义配置以满足项目的需求。 需要注意的是,具体的配置内容和结构可能因项目而异,你可以根据项目需求自定义修改这些配置文件。这些文件的目的是为了方便开发者根据不同环境和需求来配置和优化Webpack打包过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值