webpack的作用以及配置webpack

webpack是什么

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。
在项目中我们可能会用到.less文件和es6文件,我们需要将这些文件转换成html能直接使用的文件,比如less转css , es6转es5 。 我们可以先转换文件,再引用到html中,但这样做非常的繁琐,类似的文件数量一多,将会变成非常麻烦的事情。这时,我们可以使用webpack打包工具,将这些文件一次性打包并使用,简化打包的过程。
要想使用webpack,我们首先要安装webpack-cli。
全局安装 npm install -g webpack webpack-cli
局部安装 npm install --save-dev webpack webpack-cli

配置webpack

在项目文件夹中我们创建了一个webpack.config.js文件来编写webpack的配置文件

	// 配置webpack,使用nodejs和commonjs模块化
// 引入NodeJS内置模块path
// const path = require('path');
const {
  resolve
} = require('path');
// 引入插件  自动在打包出口目录内生成html文件,并且自动引入打包后的代码
const HTMLWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  // 在源代码与打包代码之间产生映射关系
  devtool: "source-map",
  // devtool: "inline-source-map",
  // devtool: "hidden-source-map",
  // devtool: "eval-source-map",
  // 设置入口文件路径
  // entry: './src/index.js',
  // 设置多入口
  entry: {
    index1: './src/index.js',
    indexa: './src/js/a.js'
  },
  // 出口
  output: {
    // 打包后的文件存放的目录的绝对路径
    path: resolve(__dirname, 'dist'),
    // 打包后的文件名
    // filename: 'index-dev.js'
    // 多出口
    // [name]是入口对象的属性名
    filename: 'js/[name]-dev.js'
  },
  // 加载器
  module: {
    rules: [
      // 处理html中的img图片的
      {
        test: /\.html/,
        use: 'html-loader'
      },
      // 处理图片文件  css中用到了图片引入
      {
        test: /\.png|jpg|gif$/i,
        use: [{
          loader: 'file-loader',
          options: {
            // 设置打包后的文件出口路径
            outputPath: 'images'
          }
        }]
      },
      /* {
        test: /index\.css$/i,
        use: [{
          loader: 'file-loader',
          options: {
            emitFile: false,
          }
        }],
      }, */
      /* {
        test: /index\.css$/i,
        // 排除某些文件
        exclude: /node_modules/,
        use: ['style-loader', 'css-loader']
      }, */
      {
        test: /\.css$/i,
        // 顺序是在数组中从右往左执行
        // style-loader 在head里创建style标签设置样式
        // css-loader将css文件代码转为字符串加载到js中
        // use: ['style-loader', 'css-loader']
        // use: 'file-loader'
        use: [{
          loader: 'file-loader',
          options: {
            outputPath: 'styles'
          }
        }]
      },
      {
        test: /\.less$/,
        // less-loader将less文件转换为css文件
        use: ['style-loader', 'css-loader', 'less-loader']
      }
    ]
  },
  // 插件
  plugins: [
    // 生成一个空白html
    // new HTMLWebpackPlugin()
    new HTMLWebpackPlugin({
      // 以指定的html模板生成html
      template: './src/main.html'
    })
  ],
  // 打包模式设置
  mode: 'development',
  // mode:'production'
  // 配置webpack开发服务器  工具:webpack-dev-server
  devServer: {
    // 构建后的目录,一般是打包后的文件存储的目录
    contentBase: resolve(__dirname, 'build'),
    // 是否gzip压缩
    compress: true,
    // 端口号  默认8080
    port: 3000,
    // 是否自动打开浏览器
    open: true
  },
};

webpack有五个模块 :
入口(entry) -----设置入口文件路径
输出(output) -----设置打包后的文件存放路径以及文件名
loader加载器(module) -----一般用于css文件的打包
插件(plugin) -----可以设置一个html模板插件
模式(mode) -----设置打包模式(一般在开发阶段使用webpack,一般不在产品阶段打包)
另外还有
source-map -----文件映射,文件出错时提示源文件位置
webpack-dev-server -----webpack开发服务器

使用webpack打包

在编写好项目代码以及webpack配置文件后,我们可以在终端直接输入webpack命令即可运行打包

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值