webpack

webpack,npm>

npm, nodejs, webpack

1.初识

1.1 npm

  • 打包管理工具
  • 可对前端项目进行管理,文件进行相应处理

1.2 webpack

  • 项目文件处理工具
  • 可对项目文件的js引用进行处理,代码进行压缩,混淆等等,以提高项目的运行性能。
    • 处理js依赖关系
    • 处理js兼容问题,高级别语法–>低级别语法

2.基础安装

2.1 nodejs下载安装教程

安装完nodejs,配置好node_global和node_cache,以及命令后基本可以到此为止了,若有其他需要安装的,后面再操作

2.2 安装完nodejs后,创建项目教程

注意创建项目前建议创建一个包,或者cd到你得项目文件处,而后使用上面的教程,对于模块的其他操作不再缀述,可参考这里

3.使用webpack

安装配置或者操作完上面的操作后基本就可以使用webpack了,建议我们使用webpack前,使用npm命令将webpack及webpack-cli安装到全局仓库

//命令模板
npm install 文件名 -g
//示例
npm install webpack-cli -g

3.1主动控制打包命令

  • 打包文件:

    • 方式1

      //命令行打包指定文件
      webpack 打包文件 目标文件
      
    • 方式2

      webpack.config.js编写如下

      const path = require('path')
      
      module.exports = {
              //打包文件,下面的__dirname是双下划线
              entry:path.join(__dirname, './src/main.js'),
              //目标文件
              output:{
                      path:path.join(__dirname, './dist'),
                      filename:'bundle.js'
              }
      }
      

      修改js文件后

      命令行键入webpack即可
      

      页面引用

      //我们引用JS时
      <script src="./dist/bundle.js"></script>
      
    • 可能的警告:

      • 警告:WARNING in configuration The ‘mode’ option has not been set. Set ‘mode’ option to ‘development’ or ‘production’ to enable defaults for this environment.

      • 处理:

        配置文件中指定为发行或者研发:
        mode: 'development' |mode: 'production'
        命令行
        webpack --mode development|webpack --mode production  
        

3.2 使用 workpack-dev-server

3.2.1 package.json配置带参数

  • 安装:

    //》》安装到本地仓库《《
    npm install workpack-dev-server
    
  • 使用

    package.json中配置

    "scripts": {
    "test": "npm vue01",
    "dev":  "webpack-dev-server"
    },
    //若上述文件中"dev": "webpack-dev-server --open --port 3000 --contentBase src --hot",
    	//其中添加open 则是表明打包完后自动打开浏览器
        //port:运行端口3000(3000-7200)
        //contentBase:打开根路径为src
        //--hot:热重载,不刷新重载
        //以上webpack-dev-server为基础,后续命令为可有可无的参数
    

    配置文件见3.1中的webpack.config.js

    页面引用

    <script src="/bundle.js"></script>
    
  • 认知

    我们的webpack编译文件时实际是将其托管到内存中的,项目根目录中是找不到的故在webpack托管的时候使用的是/fileName.js,例如说上面的页面引用就是不再是src="./dist/bundle.js"

3.2.2 webpack.config.js中配置参数

  • package.json

    "scripts": {
        "test": "npm vue01",
        "dev":  "webpack-dev-server"
      },
    
  • webpack.config.js

    //指定为开发本
    mode: 'development' 
    //指定为发行版本
    // mode: 'production'
    
    const path = require('path')
    
    //热部署步骤2
    const webpack = require('webpack')
    
    module.exports = {
            //打包文件
            entry:path.join(__dirname, './src/main.js'),
            //目标文件
            output:{
                    path:path.join(__dirname, './dist'),
                    filename:'bundle.js'
            },
            devServer:{
            //配置项,针对package.json中的dev-server
            open:true,
            port:3000,
            contentBase:'src',
            //热部署步骤1
            hot:true
            },
            plugins:[
            //热部署步骤3
                    new webpack.HotModuleReplacementPlugin()
            ]
    }
    

3.3 插件

自动将内存中的js引入到页面中

3.3.1 html-webpack-plugin

webpack.config.js

//引用html-webpack-plugin,插件
const htmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    //...
    plugins:[
        new htmlWebpackPlugin({
            template:path.join(__dirname, './src/index.html'),
            filename:'index.html'
        })
        }

3.3 加载器

3.3.1样式加载器
  • css, scss, less

  • 使用:

    webpack加载loader

    webpack.config.js

    const path = require('path')
    
    module.exports = {
        //...
        module:{
            //配置第三方加载器
            rules:[
                //处理样式的loader, 样式都得有['style-loader', 'css-loader']
                //加载器执行顺序顺序是右到左
                {test:/\.css$/, use:['style-loader', 'css-loader']},
                {test:/\.less$/, use:['style-loader', 'css-loader', 'less-loader']},
                {test:/\.scss$/, use:['style-loader', 'css-loader', 'sass-loader']},
            ]
        }
    }
    

    main.js中引入

    import './css/index.css'
    
    import './css/index.less'
    
    import './css/index.scss'
    

    页面引用

    //和普通css使用基本没有分别
    
3.3.2文件加载器
  • webpack对url和图片是不支持加载的,故需要第三方加载器支持

  • 加载器:url-loader, file-loader

  • 使用:

    webpack.config.js

    const path = require('path')
    
    module.exports = {
       //...
        module:{
            //配置第三方加载器
            rules:[
                //处理url的loader
                {test:/\.(jpg|png|gif|bmp|jpeg)$/, use:'url-loader'},
                
                //若给use添加参数limit,则此处的参数表示为一种限制
                	//图片>=限制,则会转为base64的字符串
                	//图片<限制,不会被转为base64的字符串
                {test:/\.(jpg|png|gif|bmp|jpeg)$/, use:'url-loader?limit=6000'},
                //给图片指定名称
                	//给use添加参数name,直接指定图片处理后的名称
                	//ext,后缀名
                	//缺点:若有不同图片命名为同一个名称他们的文件内容会统一,即就是只会保存一个
                 {test:/\.(jpg|png|gif|bmp|jpeg)$/, use:'url-loader?limit=6000?name=[name].[ext]'}
                	//图片同名处理办法,添加标识符,例如:添加hash值拼接图片名
                {test:/\.(jpg|png|gif|bmp|jpeg)$/, use:'url-loader?limit=6000?[hash:8]-name=[name].[ext]'}
            ]
        }
    }
    
    

    可在css中引用

    //引用方式,url,举例如下
    background-image: url('../image/p01.jpg');
    
3.3.3 引入外部图标
  • 使用bootstrop

++ 插件安装指令:

--jquery
npm i -D jquery

--webpack
npm i webpack -D
    --webpack-cli
    npm i webpack-cli -D
    --webpack-dev-server
    npm i webpack-dev-server

--html-webpack-plugin

--style
npm i style -D
    --style-loader
    npm i style-loader -D

--css
npm i css -D
    --css-loader
    npm i css-loader -D

--less(less-loader的内部依赖)
cnpm i less -D
    --less-loader
    cnpm i less-loader -D

--sass
npm i sass -D
    --sass-loader
    cnpm i sass-loader -D
    --node-sass(一般使用npm是无法下载这个的,建议使用cnpm)
    cnpm i node-sass -D 

--url-loader file-loader(file-loader是url-loader的内部依赖)
cnpm i url-loader file-loader -D

--bootstrap
cnpm i bootstrap -S
    --popper
    cnpm i popper -S
    --由于4.x版本icon文件分离出去,若使用的是4.X版本的
    npm i https://github.com/iconic/open-iconic.git -D 
  • 下载报错

    -- KIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: want...
    这是warning错误,是因为mac下需要 fsevents,在windows或linux环境下,请忽略这个错误
    -- peerDependencies WARNING sass-loader@^8.0.0 requires a peer of node-sass@^4.0.0 but none was installed
    类似的错误都是缺少对应的解析插件的原因,可能是安装有问题,也可能是没引入或者没安装,针对于没安装,一般使用<kbd>cnpm i {此处替换为@符号前的部分} -D,或者参考上面的安装命令
    

4.babel

此组件提供一些语法的识别,处理

  • 需要两个组件

    cnpm i babel-core babel=-loader babel-plugin-transform -D
    cnpm i babel-preset-env babel-preset-stage-0 -D
    
    • 配置:webpack.config.js

      //配置babel加载器的同时,设定其忽略node_moudles下的包,以避免将第三方包再次打包,浪费资源,另外项目也会受影响
      {test:/\.js$/, use:'babel-loader', exclude:/node_moudles/}
      
    • 项目根目录新建:.babelrc(babel的配置文件,同时内容要求符合json格式)

      {
      	"presets":["env", "stage-0"],
      	"plugins":["transfom-routime"]
      }
      

    学习vue就该这么学笔记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值