• 学习笔记Webpack


     一、Webpack基本使用--安装和配置

    ① 新建一个空目录并进入该目录,执行命令 npm init -y 来初始化 package.json 包管理配置文件.

    ② 执行命令 npm install webpack webpack-cli -D  来安装相关包

    ③ 在项目根目录中创建名为 webpack.config.js 的配置文件, 该配置文件初始化内容如下:

    // webpack.config.js
    
    module.exports={
        mode: 'development' //开发模式 development, 生产模式 production
    }

     ④在 package.json 配置文件中的 scripts 节点中,增加dev脚本 如下:

      "scripts": {
        "dev" : "webpack" 
      },

     ⑤ 在根目录下新建一个src的目录,同时在该目录下创建一个 index.js 的文件,文件内容可以为空

     ⑥ 在终端运行 npm run dev 命令,启动webpack进行项目打包.

     二、Webpack基本使用--配置打包的入口与出口

    // webpack.config.js
    const path = require('path')    //导入node.js中操作路径的模块
    
    module.exports={
        mode: 'development', //开发模式 development, 生产模式 production
    
        entry: path.join(__dirname,'src/index.js'),    //打包入口文件路径
    
        output:{
            path: path.join(__dirname,'dist'),        //输出文件的路径
            filename: 'bundle.js'                     //输出文件的名称
        }
    }

      

    三、Webpack基本使用--配置自动打包

      ① 执行命令 npm install webpack-dev-server -D 

           ② 在 package.json 配置文件中的 scripts 节点中,修改dev脚本 如下:

      "scripts": {
        "dev" : "webpack-dev-server" 
      },

         ③ 在src目录下新建一个index.html文件,index.html文件中引入 <script src="/bundle.js"></script>

          该bundle.js文件是看不见的,它是在内存中的文件.

         ④ 在终端运行 npm run dev 命令,启动webpack进行项目自动打包.

         ⑤若访问链接 http://localhost:8080/ 报错 Cannot GET / ,则需要在 webpack.config.js中增加devServer的如下配置内容:

    // webpack.config.js
    const path = require('path')    //导入node.js中操作路径的模块
    
    module.exports={
    
        mode: 'development', //开发模式 development, 生产模式 production
    
        entry: path.join(__dirname,'src/index.js'),    //打包入口文件路径
    
        output:{
            path: path.join(__dirname,'dist'),        //输出文件的路径
            filename: 'bundle.js'                       //输出文件的名称
        },
    
         // webpack4.0版本不需要加,webpack5.0版本必须加才行
        devServer: {
            static: {
              directory: path.join(__dirname, "/"),
            },
          }
        
    }

    四、Webpack基本使用--配置html-webpack-plugin生成预览页面

      ① 执行命令 npm install html-webpack-plugin -D  安装生成预览页面的插件

           ② 修改 webpack.config.js 的配置文件,在该文件的头部区域添加如下内容:

           ③ 修改 webpack.config.js 的配置文件, 在module.exports里面增加 plugins的配置

    // webpack.config.js
    const path = require('path')    //导入node.js中操作路径的模块
    
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    const htmlPlugin = new HtmlWebpackPlugin({  //创建插件的实例对象
        template: 'src/index.html',     //指定要用到的模板文件,即要复制的首页文件
        filename: 'index.html'          //指定生成的文件名称,该文件存在于内存中
    })
    
    module.exports={
    
        ...忽略其它内容...
          plugins: [htmlPlugin]   //plugins数组是webpack打包用到的一些插件列表

    }

         ④  在终端运行 npm run dev 命令,启动webpack进行项目自动打包

    五、Webpack基本使用--配置自动打包相关参数

      ① 在package.json文件的 script 中

           ②  --open 表示自动打开浏览器 --host 配置IP  --port 配置端口

      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "webpack-dev-server --open --port 8288 --host 127.0.0.1 "
      },

           ③ 在终端运行 npm run dev 命令,启动webpack进行项目自动打包

     

    六、Webpack基本使用--通过loader打包非js模块

      在实际开发中,webpack默认只能打包以.js结尾的模块,其它非.js的模块无能为力,此时需要调用loader加载器才能正常打包

      loader加载器可以协助webpack打包处理特定的文件模块。

         处理css结尾的文件

           ① 执行命令 npm install style-loader css-loader -D  安装加载器

           ② 修改 webpack.config.js 的配置文件,在module.exports里面增加 module 的配置

    // webpack.config.js
    ...忽略其它内容
    
    module.exports={
         ...忽略其它内容
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader']}  //它会处理以css结尾的文件,同时从该数组配置的两个loader的右边loader往左边执行
            ]
        }
        
    }

            ③ 在src目录下新建测试文件 123.css ,写一个简单的样式如 

               body{
                   background-color: pink;
                }
           ④  在index.js中引入该样式文件  import ‘./123.css’

           ⑤ 在终端运行 npm run dev 命令,启动webpack进行项目打包.

         处理less结尾的文件

           ① 执行命令 npm install less-loader less -D  安装加载器

           ② 修改 webpack.config.js 的配置文件,在module.exports里 module 的 rules中增加配置项

    // webpack.config.js
    ...忽略其它内容
    
    module.exports={
        ... 忽略其它内容
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader']},
                {test: /\.less$/, use: ['style-loader','css-loader','less-loader']},
            ]
        }
        
    }

       ③ 在src目录下新建测试文件 123.less ,写一个简单的样式如    

       body{
                 margin: 0;
                padding: 0;
           }
           ④  在index.js中引入该样式文件  import ‘./123.less’

           ⑤ 在终端运行 npm run dev 命令,启动webpack进行项目打包.

     

         处理scss结尾的文件

           ① 执行命令 npm install sass-loader node-sass -D  安装加载器

           ② 修改 webpack.config.js 的配置文件,在module.exports里 module 的 rules中增加配置项

    // webpack.config.js
    ...忽略其它配置
    
    module.exports={
       ...忽略其它配置
        module:{
            rules:[
                {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']},
            ]
        }
        
    }

       ③ 在src目录下新建测试文件 123.scss ,写一个简单的样式如     

     body{
             background-color: #666;
          }
           ④  在index.js中引入该样式文件  import ‘./123.scss'

           ⑤ 在终端运行 npm run dev 命令,启动webpack进行项目打包.

     

      配置postCSS自动添加css的兼容前缀

           ① 执行命令 npm install postcss-loader autoprefixer -D  安装加载器

           ② 在项目根目录新建 postcss.config.js 的配置文件,内容:

    // postcss.config.js
    
    const autoprefixer = require('autoprefixer') //导入自动添加前缀的插件
    
    module.exports={
    
        plugins: [autoprefixer]   //挂载插件
    
      
    }

         ③ 在src目录下修改测试文件 123.css ,写如下样式     

      ::placeholder{
               color: red;
           }
           在src/index.html中body里面增加  <input type = 'text' placeholder='test' />
     
            ④  修改 webpack.config.js 的配置文件,在module.exports里 module 的 rules中的.css里面追加
    // webpack.config.js
    ...忽略其它配置
    
    module.exports={
       ...忽略其它配置
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader','postcss-loader']},
                {test: /\.less$/, use: ['style-loader','css-loader','less-loader']},
                {test: /\.scss$/, use: ['style-loader','css-loader','sass-loader']},
            ]
        }
        
    }

           ⑤ 在终端运行 npm run dev 命令,启动webpack进行项目打包

           ⑥ 在不同的浏览器中观察效果是否一致

     

     打包样式表中的图片或字体文件

           ① 执行命令 npm install url-loader file-loader -D  安装加载器

           ② 在src目录下修改测试文件 123.css ,写如下样式     

      #test{
               with:300px;
                height:200px;
                backgroud: url(../images/1.jpg)
              }
           ③在src/index.html中body里面增加  <div id="test"></div> , 同时注意 新建 images目录并放置1.jpg图片
     
            ④  修改 webpack.config.js 的配置文件,在module.exports里 module 的 rules中的追加配置
    // webpack.config.js
    ...忽略其它配置项
    
    module.exports={
    
       ...忽略其它配置项
    
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader','postcss-loader']},
                {test: /\.less$/, use: ['style-loader','css-loader','less-loader']},
                {test: /\.scss$/, use: ['style-loader','css-loader','sass-loader']},
                //当图片大小小于limit指定值(byte)则会被转成base64图片
                {test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use: 'url-loader?limit=102400'} 
            ]
        }
        
    }

           ⑤ 在终端运行 npm run dev 命令,启动webpack进行项目打包

         

    打包JS文件中的高级语法

           ① 执行命令 npm install babel-loader @babel/core @babel/runtime -D  安装babel转换器相关包

           ② 执行命令 npm install @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties   -D  安装babel语法插件相关包  

           ③在根目录创建babel的配置文件 babel.config.js ,内容如下:
     
    // babel.config.js
    
    module.exports={
    
        presets: ['@babel/preset-env'], //语法包
        plugins: ['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']   //挂载插件
    
    }
            ④  修改 webpack.config.js 的配置文件,在module.exports里 module 的 rules中的追加配置
    // webpack.config.js
     ...忽略其它配置
    
    module.exports={
    
       ...忽略其它配置
    
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader','postcss-loader']},
                {test: /\.less$/, use: ['style-loader','css-loader','less-loader']},
                {test: /\.scss$/, use: ['style-loader','css-loader','sass-loader']},
                //当图片大小小于limit指定值(byte)则会被转成base64图片
                {test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use: 'url-loader?limit=102400'} ,
                 ///node_modules目录下的是第三方包的不是我们写的代码必须排除掉
                {test: /\.js$/, use: 'babel-loader', exclude:/node_modules/} ,
            ]
        }
        
    }

          ⑤  在src/index.js中写一个测试代码

        class Person{
              static info = 'aaa'
        };
        console.log(Person.info);

          ⑥  在终端运行 npm run dev 命令,启动webpack进行项目打包.

    配置vue组件的加载器

           ① 执行命令 npm install vue-loader vue-template-compiler -D  安装相关包

           ② 在webpack.config.js中添加如下配置 

    // webpack.config.js
    ...忽略其它配置
    
    const VueLoaderPlugin = require('vue-loader/lib/plugin')    //vue插件
    
    module.exports={
    
      ...忽略其它配置
    
        plugins: [htmlPlugin,new VueLoaderPlugin()],   //plugins数组是webpack打包用到的一些插件列表
    
        module:{
            rules:[
                {test: /\.css$/, use: ['style-loader','css-loader','postcss-loader']},
                {test: /\.less$/, use: ['style-loader','css-loader','less-loader']},
                {test: /\.scss$/, use: ['style-loader','css-loader','sass-loader']},
                //当图片大小小于limit指定值(byte)则会被转成base64图片
                {test: /\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/, use: 'url-loader?limit=102400'} ,
                 ///node_modules目录下的是第三方包的不是我们写的代码必须排除掉
                {test: /\.js$/, use: 'babel-loader', exclude:/node_modules/} ,
                {test: /\.vue$/, use: 'vue-loader'} 
            ]
        }
        
    }
           ③ 在src/index.js文件中 引入.vue文件 ,如 
                import App from './components/App.vue'
           ④  在终端运行 npm run dev 命令,启动webpack进行项目打包.
     

    六、Webpack基本使用--VUE文件

      ①  vue 单文件由3部分组成 template组件的模板区域 script业务逻辑区域  style样式区域

           ②  编写一个.vue文件示例 注意在VSCode中安装插件 Vetur 这样编辑器才能识别和提示vue文件

    <template>
        <div>
            <h3>这是App.vue的组件</h3>
        </div>
    </template>
    
    <script>
    
    export default{
    
        data(){
            return {
    
            }
        },
        methods:{
    
        }
    }
     
    </script>
    
    <style scoped>
        h3{
            color:red;
        }
    </style>

     ③ 注意在当前项目根目录下的终端运行 npm install vue -S  来安装vue

    七、Webpack项目中使用 vue

      ①   npm install vue -S 安装vue

           ②  在src/index.js 入口文件中,通过 import Vue from 'vue' 来导入vue构造函数

           ③  创建vue实例对象,并指定要控制的 el 区域

           ④  通过 render函数 渲染 App 根组件

    // src/index.js
    //忽略之前其它测试代码
    
    
    //------------------华丽的分割线------------------------------
    import Vue from 'vue'
    //导入vue单文件组件
    import App from './components/App.vue'
    
    const vm = new Vue({
        el: '#app',
    
        render: c => c(App)
        
    });

        ⑤  在src/index.html 中加上 id为app 的 div

        
        <!-- 将来作为vue的控制区域 -->
          <div id="app">
            
          </div>

        ⑥  在终端运行 npm run dev 命令,启动webpack进行项目打包.

          

    八、Webpack打包发布

      ①   修改项目根目录下的 package.json文件

           ②  在script中增加 build脚本

      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "webpack-dev-server --open --port 8288 --host 127.0.0.1 ",
        "build": "webpack "
      },

         ③  在终端运行 npm run build 命令,webpack进行项目打包.,生成的文件在dist目录下.

         注意: 这个是最简单的打包发布

    附 package.json

    {
      "name": "02_webpack_gehangbianse_New",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "webpack-dev-server --open --port 8288 --host 127.0.0.1 ",
        "help": "webpack --help",
        "build": "webpack "
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.16.7",
        "@babel/plugin-proposal-class-properties": "^7.16.7",
        "@babel/plugin-transform-runtime": "^7.16.8",
        "@babel/preset-env": "^7.16.8",
        "@babel/runtime": "^7.16.7",
        "autoprefixer": "^10.4.2",
        "babel-loader": "^8.2.3",
        "css-loader": "^6.5.1",
        "file-loader": "^6.2.0",
        "html-webpack-plugin": "^5.5.0",
        "less": "^4.1.2",
        "less-loader": "^10.2.0",
        "node-sass": "^7.0.1",
        "postcss-loader": "^6.2.1",
        "sass-loader": "^12.4.0",
        "style-loader": "^3.3.1",
        "url-loader": "^4.1.1",
        "vue-loader": "^15.9.8",
        "vue-template-compiler": "^2.6.14",
        "webpack": "^5.66.0",
        "webpack-cli": "^4.9.1",
        "webpack-dev-server": "^4.7.3"
      },
      "dependencies": {
        "vue": "^2.6.14"
      }
    }
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    thinkphp下载远程图片到本地
    centos6.5安装sublime text 2
    centos6.5安装node.js
    thinkphp分页搜索条件带中文参数
    netbean快捷键
    caffe+NVIDIA安装+CUDA7.5+ubuntu14.04(显卡GTX1080)
    poj 1410 Intersection
    安装openblas和matcaffe时遇到的问题
    ubuntu 14.04 安装matlab2015b(破解版),具体软件请访问我的网盘~
    FasterRCNN编译使用及相应问题解决
  • 原文地址:https://www.cnblogs.com/xin1006/p/15803210.html
Copyright © 2020-2023  润新知