工具学习——webpack 项目打包

  webpack是一个专注于打包的工具。也就是把许多零碎的文件组合在一起,达到前端优化的效果。

  •  打包原理
              
              确定入口文件:即所有程序的入口
              获取依赖:核心功能,分析依赖的顺序,并将各个文件按照依赖关系依次打包下去。
              确定出口文件:一般打包都是输出一个文件,但也有打包成多个文件的,比如说common、异步文件等
              打包:输出最终内容。
  • webpack依赖
        使用webpack 核心就是配置config,我们需要关注的核心配置是:entry、output、resolve、externals、watch、loader、plugins。
         默认的配置文件是webpack.config.js
  1. entry
             即配置项目的入口文件。有3个option,分别是string,array,object。前两者打包为一个文件,object打包为多个文件
             string:指定入口文件。
             array:多个入口文件、最终打包在一起。
             object:多chunk,key指定chunk的名字,value指定chunk的地址。

         2. output
             
             配置出口文件的名字和路径, 以及出口文件命名的格式。
            一般为:
output{
   path:_dirname + '/dist', //指定输出文件的文件名,不建议带路径 
   filename:"[name].js" 
}
            如果是打包库文件:
        
output{
    path:_dirname + '/dist',
    filename: "[name].js",
    library:'L',
    libraryTarget:'umd'
}
       3. resolve
 
           主要是分析依赖时的路径识别配置。
           resolve.root:指明包含所需模块的目录(必须是绝对路径!)
resolve{
  root[
     path.resolve('./app/modules'),
     path.resolve('./vendor/modules')
   ]
}
        resolve.alias:路径配置规则。是一个object,key是模块的名字,value是路径。如果key名中包含$,则只有精确匹配的才会被代替。规则如下:如果在/abc/entry.js中设置不同的依赖。


     4. externals
      配置外部依赖。如果有引入第三方的库,则在这里进行配置。如
externals{
 'jquery':{
           root: 'jquery',
            amd: 'jquery',
            commonjs2: 'jquery',
            commonjs: 'jquery'
  }
}

 5. watch

    watch 模块将在文件变更之后rebuild。主要有两个option:
    aggregateTimeout:只有在使用CLI或者简单的node.js API的时候才用。在第一次改变之后延迟rebuild的时间,value的单位是ms。缺省值是300
    poll:只有使用CLI和简单的node.js API的时候才使用。设置为true表示使用轮训,number是设置轮训的时间间隔,单位是ms。

 6. loader
    告知不同的文件需要使用什么加载器。
    test:用来匹配相对应文件的正则表达式
    loaders:告诉webpack要用哪种加载器来处理test所匹配的文件。
module: {
    loaders: [{
      test: /\.css$/,
      loaders: ['style', 'css']
    }]
  }
    loaders安装方法:
 
$ npm install xxx-loader --save-dev

  7. plugins 
     可以给webpack安装不同的插件。插件的类型有两种,一种是内置插件,一种是第三方插件。
     安装内置插件:
var webpack=  require('webpack');
module.exports = {
    new webpack.optimize.UglifyJsPlugin({
      compressor: {
        warnings: false,
      },
    })
};
    安装第三方插件:
  
//npm install component-webpack-plugin 先要在安装该模版
var ComponentPlugin = require("component-webpack-plugin");
module.exports = {
    plugins: [
        new ComponentPlugin()
    ]
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值