• webpack的配置处理


    1、webpack对脚本的处理

      1、Js用什么loader加载?

        1>webpack 本身就支持js的加载,

        2>通过babel-loader ES2015 加载js,再用 babel-polyfil 做兼容性适配

      2、如何处理多个入口文件?

        将entry 写成一个对象的形式:

        entry: {

          'common': ['./src/page/common/index.js'],

          'index': ['./src/page/index/index.js'],

          }

      3、output要分文件夹存放目标文件,如何设置?

        output: {

          path: path.resolve(__dirname, 'dist'),

          publicPath:'/dist/',

          filename: 'js/[name].js'

          },

        这样配置的文件会在根目录编译生成dist文件夹,在dist文件夹下创建js文件夹存放打包的js文件

      4、如何提取公共模块?

        entry: {

          'common': ['./src/page/common/index.js']

          }

        plugins: [

          new webpack.optimize.CommonsChunkPlugin({

             name: "common",

             filename: "js/base.js"

           }),

          ]

    2、webpack对样式的处理

      1、样式使用怎样的loader?

      2、webpack将css打包成js模块,但是css不想在js运行完才开始加载,想把css打包成单独的css文件该如何处理?

    var ExtractTextPlugin = require("extract-text-webpack-plugin");
    var config = {
    module: {
        loaders: [
            {
                test: /.css$/,
                loader: ExtractTextPlugin.extract("style-loader","css-loader")
            },
            {
                test: /.(png|gif|jpg|woff|svg|eot|ttf|ico)??.*$/,
                loader: "url-loader?limit=100&name=resource/[name].[ext]"
            },
            {
                test:/.string$/,
                loader:'html-loader',
                query:{
                    //告诉html-loader在加载文件的时候做最小化压缩
                    minimize:true,
                    //指定是否要删除属性上的引号
                    removeAttributeQuotes:false
                }
            }
        ]
    }, 
    plugins: [
        //把CSS单独打包到文件里
        new ExtractTextPlugin('css/[name].css'),
        //独立通用模块到js/base.js
        new webpack.optimize.CommonsChunkPlugin({
            name: "common",
            filename: "js/base.js"
        }),
        //html模板的处理
        new HtmlWebpackPlugin(getHtmlConfig('index',"首页")),
    ]
    }

       3、webpack对html模板如何处理?

      不对html处理时,会出现什么问题:

      1、在引入css文件时,在后面是需要加版本号的,并且这个版本号是不能用手工来维护的,每次上线会把这个版本号改掉

      2、html是在src文件夹下,没有在打包形成的dist文件夹下,在发布的时候会只发布dist文件夹下,而src文件夹下是不管的,所以文件的位置也是不对的

      处理方法: 

      const HtmlWebpackPlugin = require('html-webpack-plugin');
    //获取html-webpack-plugin参数的方法
    var getHtmlConfig=function (name,title) {
        return {
            template:'./src/view/'+name+'.html',
            filename:'view/'+name+'.html',
            favicon:'./favicon.ico',
            //inject:true时,不用手动引入js与css文件,它会自动的注入到html页面
            inject:true,
            //hash会在我们引入的js与css后面加一个版本号
            hash:true,
            chunks:['common',name],
            title:title
        };
    };
    var config = {
    plugins: [
      //html模板的处理
      new HtmlWebpackPlugin(getHtmlConfig('index',"首页")),
      new HtmlWebpackPlugin(getHtmlConfig('list',"商品列表")),
      new HtmlWebpackPlugin(getHtmlConfig('detail',"商品详情"))
    ] 
    }

      4、webpack-dev-server 自动编译处理

    //环境变量的配置dev /online
    var WEBPACK_ENV=process.env.WEBPACK_ENV||'dev';
    if('dev'===WEBPACK_ENV){
        config.entry.common.push('webpack-dev-server/client?http://localhost:8088/');
      //common 模块时公共模块,已经打包进每一个页面,而webpack-dev-server 需要监控到每一个页面的变化,所以将webpack-dev-server路径添加进common的路径数组中
    }
  • 相关阅读:
    C#创建ActiveX
    easy-ui 中的事件触发 (tree)
    程序目录
    微信公众平台开发
    Redis分片机制
    Redis主从切换
    Redis主从复制
    Redis持久化机制
    Redis缓存击穿、缓存穿透、缓存雪崩
    Redis与数据库数据一致性
  • 原文地址:https://www.cnblogs.com/yuxingyoucan/p/9172562.html
Copyright © 2020-2023  润新知