webpack

webpack

1.  webpack是一个模块打包器(和gulp作用相似)
webpack的安装
  1-1   全部安装webpack,为了实际用webpack命令
  2-1   全局安装webpack-cli
  2-3   新建webpack默认配置文件 webpack.config.js
下包 webpack-cli ,
npm install babel-loader@8.0.0-beta.0 @babel/core @babel/preset-env webpack  //高版本
或
npm install babel-loader babel-core babel-preset-env webpack  //低版本

  • 开发环境 —— src,development
    。程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告
  • 生产环境 —— 打包上线,production
    。正式提供对外服务的
  • alias : 配置别名
webpack的的四大核心
entry:入口
  1. 字符串格式
   entry: path.join(__dirname, "./src/index.js")
  1. 数组格式
  entry: [
          path.join(__dirname, "./src/index.js"),
          path.join(__dirname, "./src/app.js")
   ],

3.对象格式

    entry: { 
		    "index": path.join(__dirname, "./src/index.js"),
		    "app": path.join(__dirname, "./src/app.js"),
    },
注意
  • 字符串格式是单入口文件,默认是dist下的main.js.
  • 数组格式不常用——了解
  • 对象格式是多入口模式
ouput:出口
 output: { 
        path: path.join(__dirname, "build"), //编译之后的文件路径,build是生成的文件夹
        filename: "app.js", //filename是重命名
    },
  • filename: “[hash]-[name].js” //这个是多入口文件的时候,就使用[name].js;
loader:所有的加载器=>主要是来解析非js文件的
loader需要下载的包
	npm i  babel-laoder  @babel/core  @babel/preset-env
	npm i  style-loader  css-loader
	npm i  url-loader   //图片加载器
	npm i  file-laoder  // 字体图标
	npm i  style-loader scss-loader  node-sass
	npm i  html-loader 
module: { 
        rules: [{
                //js
                test: /\.(js|jsx)$/,
                loader: 'babel-loader',
                options: {
                    presets: ['@babel/preset-env']
                }

            }, {
                //css
                test: /\.css$/,
                use: ["style-loader", "css-loader"]

            }, {

                test: /\.(png|jpg|gif)$/,
                use: [{
                    loader: "url-loader",
                    options: { //设置啊当前loader的配置项
                        limit: 8192,
                        name: "./img/[name].[ext]" //放到img文件夹里面
                    }
                }]

            }, {
                //字体图标
                test: /\.(svg|woff|ttf|eot)/,
                loader: "file-loader", //小文件类型
                options: {
                    name: "./font/[name].[ext]"
                }

            }, {
                //sass  //pro
                test: /\.scss$/,
                // use: ["style-loader", "css-loader", "sass-loader"],
                use: ExtractTextPlugin.extract({ //抽离
                    fallback: "style-loader",
                    use: ["css-loader", "sass-loader"],

                })
            }, {
                test: "/\.html/",
                loader: "html-loader" //解决html上的img图片引入的问题
            }

        ]
    },
加载器注意点babel-loader
  • 因为之前的加载器版本略低,解析不了,所以需要创建.babelrc
 module: {
    rules: [
         babel - loader //配置项
        新建.babelrc
      "presets": [
             "@babel/preset-env"
  ]
  在loader里面写 
	{
	       test: /\.(js|jsx)$/, //匹配文件
	    loader: "babel-loader", //加载loader
	   options: {
	        "presets": ["@babel/preset-env"]
	       }
	      }
	     ]
	}
配置环境命令-》正常webpack
默认webapck.config.js
  • webpack
  • webpack-dev-server
webpack.dev.js的命令
  • 文件命令 npm run build
  • 服务命令 npm run dev
   "build": "webpack --config webpack.dev.js  --mode production",
   "dev": "webpack-dev-server --config webpack.dev.js --mode production"
plugins 插件后面数组
  • 先下载插件
  • 在用require引入
  • 调用 new 变量名
  • 注意 下载抽离的下一个版本 npm i extract-text-webpack-plugin@next
  • 使用热更新插件只需下载webpack,无需下载热刷新插件。
需要下载的插件:
  const HtmlWebpackPlugin = require('html-webpack-plugin'); 
  const clean=require("clean-webpack-plugin")
  const webpack = require('webpack'); // 用于访问内置插件,后面紧跟热刷新
  const ExtractTextPlugin=require("extract-text-webpack-plugin")
plugins: [
         new ExtractTextPlugin("style1.css"), //抽离css
         new Cleanwebpack(), //清空
         new HtmlWebpackPlugin({
             template: "index.html", //要编译的模板
             filename: "app.html", //修改成功的
             title: "1701B",
             inject: true, //是否注入js,css,默认是true,
             minify: { //了解
                  removeAttributeQuotes: true, //去除引号
                  collapseWhitespace: true, //去除空格
                  removeComments: true, //去除注释
                  removeEmptyAtrributes: true, //去除空属性

             }
        }),
        new webpack.HotModuleReplacementPlugin(),  //热刷新调用
    ],		
起服务
  • 需要下载 webpack-dev-server
devServer: {
        port: 9097,
        open: true,
        host: "localhost",
        hot: true,
        inline:true,
        before(app) {
            app.get("/list", (req, res, next) => {
                res.send({ code: 1, data: list });
            })
        }
    }
    //	启动服务之后形成的build文件夹是虚拟的,需要在执行生产命令才会有真实文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值