webpack 回顾+高级(学习笔记)

webpack 回顾+高级(复习学习笔记)

按步骤一步一步来
第一次见谅

第一步

  • 创建如下文件格式:
    在这里插入图片描述
  • npm init -y 生成该文件:
    在这里插入图片描述
  • 编辑webpack.config.js文件:
	const path  = require('path');
   	module.exports = {
   	    entry:path.join(__dirname,'/src/main.js'),//入口文件
   	    output:{
   	        path:path.join(__dirname,'/dist'),//输出文件目录
   	        filename:'bundle.js'//输出文件名
   	    }
   	}

第二步 安装webpack

  • 执行如下指令
	npm i webpack --dev
	npm i webpack-dev-server html-webpack-plugin --dev

第三步 修改webpack.config.js 添加下载的webpack等组件

  • 修改如下:
	const path  = require('path');
	const htmlWebpackPlugin = require('html-webpack-plugin');
	module.exports = {
	    entry:path.join(__dirname,'/src/main.js'),//入口文件
	    output:{
	        path:path.join(__dirname,'/dist'),//输出文件目录
	        filename:'bundle.js'//输出文件名
	    },
	    /*第四步*/plugins:[//插件
	        new htmlWebpackPlugin({
	            template:path.join(__dirname,'/src/index.html'),
	            filename: 'index.html'
	        })
	    ]
	}
  • 第五步 修改 package.json 里"script"里更新为
    "dev": "webpack-dev-server --open --port 3000 --hot"
  • 以上语句为启动的节点 --open:自动打开浏览器 --port:指定端口号 --hot:启动热更新

第六步 运行一下(应该有问题)

  • npm run dev
    在这里插入图片描述
  • 果然 提示我们下载webpack-cli 下载后webpack工具正式启用运行

第七步 添加一些相关的loader

  • 先下载这些loader
npm i style-loader css-loader sass-loader node-sass url-loader file-loader -S

第八步 配置 webpack.config.js里的module结点

  • 配置如下:
   module: {
           rules: [
               {test:/\.css$/,use:['style-loader','css-loader']},
               {test:/\.scss$/,use:['style-loader','css-loader','sass-loader']},
               {test:/\.(png|gif|bmp|jpg)$/,use:'url-loader?limit=5000'},
               {test:/\.js$/,use:'babel-loader', exclude:/node_module/}
           ]
       }

第九步 在配置上步骤还要添加识别高级语法相关的loader

npm i babel-core babel-loader babel-plugin-transform-runtime babel-preset-env babel-preset-stage-0 -S

第十步 创建 .babelrc文件

	{
	  "presets": ["env","stage-0"],
	  "plugins": ["transform-runtime"]
	}

第十一步 发布之前:

  • 命令行webpack执行,自动在dist文件下生成所有文件,由于生成的文件bundle.js太大,webpack.config.js为开发时的文件配置,复制其内容创建新的webpack.pub.config.js文件

  • 在执行webpack时出现了问题,主要书该笔记也有半年多了,如今拿来复习一下也难免出错 网上找了下解决方案

  • 1、 卸载旧的babel
    npm un babel-core babel-preset-env babel-preset-stage-0 babel-plugin-transform-runtime

  • 2、 安装新的babel
    npm i -D @babel/core @babel/preset-react @babel/preset-env babel-preset-mobx @babel/plugin-proposal-object-rest-spread @babel/plugin-transform-runtime @babel/runtime

  • 3、修改.babelrc文件
{
    "presets": ["@babel/preset-env", "@babel/preset-react", "mobx"],
    "plugins": [
        "@babel/plugin-proposal-object-rest-spread",
        "@babel/plugin-transform-runtime"
    ]
}
!!webpack执行以后 成功

之前在这里插入图片描述之后在这里插入图片描述

  • 差距还是很大的

第十二步 package.json

  • "script"添加如下
	"pub": "webpack --config webpack.pub.config.js"

第十三步 删除无用文件

  • 由于每次开发都会有新文件产生并且是一些旧文件无用了,所以要删除掉,安装此插件npm i clean-webpack-plugin -S
  • 在webpack.pub.config.js文件中导入每次删除文件夹的插件,如下:
	const cleanWebpackPlugin = require('clean-webpack-plugin');
	new cleanWebpackPlugin(['dist']) //在plugins里new此句

第十四步 发布思路

  • bundle.js中只存放自己的代码,第三方包的代码全部抽离到另外的js中
  • 还没有结束,继续修改webpack.pub.config.js中的内容
    const webpack = require('webpack')
  • 在plugin中添加
	new webpack.optimize.CommonsChunkPlugin({
		name:'vendors',//指定要抽离的入口文件
	    filename:'vendors.js',//将来在发布时,除了会有一个bundle.js还会多一个vendors.js文件,里面存放了所有第三方包
	})
  • 需要修改 entry里的路径,修改如下:
	entry:{//配置入口节点
        app:path.join(__dirname,'/src/main.js'),
        vendors:["jquery"]//把药抽离的第三方包的名称放到该数组中
    },//入口文件

十五步 对js文件进行压缩

  • 在webpack.pub.config.js文件里的plugin中添加
	new webpack.optimize.UglifyJsPlugin({
           compress:{//配置压缩选项
               warnings:false//移除警告
           }
   		}),
      new webpack.optimize.DedupePlugin({//设置为产品上线环境,进一步压缩js文件
          'process.env.NODE_ENV':'production'
      })

十六步 压缩html

  • 在plugin中HTMLwebpackPlugin对象中添加minify属性,如下:
	minify:{
        collapseWhitespace:true,//合并多余的空格
        removeComments:true,//移除注释
        removeAttributeQoute:true//移除属性上的双引号
    }

十七步 抽离样式表文件

  • 下载此插件 npm i extract-text-webpack-plugin -S
  • 在webpack.pub.config.js中的配置与修改
	const ExtractTextPlugin = require('extract-text-webpack-plugin');
	//module下的rusle中关于css项修改
	{test:/\.css$/,use:['style-loader','css-loader']},==修改为==>
	
	{test:/\.css$/,use:ExtractTextPlugin.extract({
	                    fallback:'style-loader',use:'css-loader'
	                })},
  • plugins 中 添加 new ExtractTextPlugin(‘css/style.css’)

压缩抽离出来的css文件

  • npm i optimize-css-assets-webpack-plugin -S
  • const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
  • plugin中新增导入插件:new OptimizeCssAssetsWebpackPlugin()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值