webpack

webpack

【推荐】
webpack官网
总结别人对webpack的理解
https://segmentfault.com/q/1010000007581542
process.env设置
devDependencies和dependencies区别
vue-loader处理vue文件
vue-loader处理过程
深入理解vue-loader如何使用
开发过程中vue项目保存编译慢优化方法
url-loader
vue中引入全局scss大坑
一文读懂babel-loader、babel-polyfill、babel-transform-runtime的区别和联系
html-webpack-plugin详解
webpack 之 DefinePlugin
详解CommonsChunkPlugin的配置和用法
配置:

  1. entry定义入口文件位置,可以多个,(多入口对应多页面)
  entry: './path/to/my/entry/file.js',
  entry: {
    main: './path/to/my/entry/file.js',
  },
  entry: ['./src/file_1.js', './src/file_2.js'],
  1. output定义输出文件,只能有一个
  output: {
    filename: 'bundle.js',
  }
  vue的output配置
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  1. loader:在模块被引入之前,预处理模块中的内容,不同的loader可以处理不同的文件
vue-loader解析vue文件中的template,script,style语言块,然后交给不同的loader处理
babel-loader是一个js编译器,将js语法编译成浏览器可以识别的es5语法
url-loader用于对小图片使用base64加密
sass-loader用于处理.scss或者.sass文件(推荐【sass-loader@7.3.1, node-sass@4.12.0高版本全局使用scss会报错】)
{
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
       {
        test: /\.scss$/,
        loaders: ['style', 'css', 'sass'],
        include: [resolve('assets')]
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[hash:7].[ext]')
        }
      },
  1. plugin:打包优化,资源管理,注入环境变量
webpack.dev.conf.js中插件
html-webpack-plugin:生成html文件入口,将html文件中引入的外部资源如script、link添加编译后的hash,防止缓存
DefinePlugin:将系统环境变量存储在process.env中
HotModuleReplacementPlugin:代码修改后自动更新(热更新)
NoEmitOnErrorsPlugin:报错不阻塞
Friendly-errors-webpack-plugin:识别webpack错误
copy-webpack-plugin:在webpack中拷贝文件和文件夹,在vue中使用的是将static目录中的文件拷贝到dist
webpack.prod.conf.js中插件
UglifyJsPlugin:对js文件进行压缩
extract-text-webpack-plugin:将css打包到独立的scc文件
optimize-css-assets-webpack-plugin:css文件进行压缩
HashedModuleIdsPlugin:文件不变时打包hash不变
CommonsChunkPlugin:提取第三方库和公共模块,node_modules和webpack运行文件
compression-webpack-plugin:gzip压缩

const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件

module.exports = {
  plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/dev.env')
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
    new webpack.NoEmitOnErrorsPlugin(),
    // https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    }),
    // copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      }
    ])
  ]
};
  1. webpack是一个打包工具,可以从入口文件开始解析文件的依赖,将代码打包
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值