• webpack的基本配置


    全局:cnpm i webpack -g

    局部:cnpm i webpack -D

    1、在webpack中需要有出口与入口文件

      指令:webpack  app.js  build.js 

      注释:打包webpack文件,入口文件app.js,打包为build.js文件

    2、进入文件每个项目都需要用到指令:npm init 

      一路回车 + -y  代表yes

    3、假设建立开发目录src文件夹

    4、假设建立生产目录build文件夹

    5、建立webpack配置文件config.js文件

      const path = require('path')   由于webpack基于nide.js可以引入node模块

      const config = {}  创建模块

      module.exports = config  暴露模块

      module.exports = (env)=>{    暴露模块(函数)  可以运行指令webpack --env hello; 函数中可以接受env参数,打印env参数会在命令行显示hello

        console.log(env)

        return config

      }

      对象内配置任务:

        入口 entry:‘路径’   一般是src下的app.js文件,入口文件可以是数组,可以引入多个入口文件,运行顺序从前到后; 此种方法可用于单页面应用

        出口 output:{

            path:path.join(__dirname,'build'),   出口打包文件    注释:path.join()方法可以合并路径,__dirname为相对路径,即build之前最大的路径

            filename:'app.js'   打包的文件名字叫做app.js  不确定名字时会打包成main.js文件

          }

        entry:{    入口文件也可以设置为对象,打包不同的文件; 此种方法可用于多页面应用

          app:'./src/app.js',
          vendor:'./src/vendor.js'
        },
        output:{
          path:path.join(__dirname,'build'),
          filename:'[name]_[hash].js'    名字为入口设置的名字;+hash值可以区别版本,只要改动文件内容,hash值必定不同
        }

    6、建立一个html文件,引入打包的文件可以测试运行

    7、指令webpack --watch

       监听:当改动文件后立即更新

    8、在package.json中的script中可以修改指令

      例子:"build":"webpack"    输入命令npm run build可以运行webpack

    9、指令cnpm i html-webpack-plugin -D 开发用插件

      const HtmlWebpackPlugin = require('html-webpack-plugin') 引入插件

      用法:

        plugins:[

          new HtmlWebpackPlugin({

            title:"乐蜂网",    网页的title名字

            fliename:"123.html"  文件的名字

          }),

          new HtmlWebpackPlugin({

            title:"乐蜂网",    网页的title名字

            fliename:"123.html",  生成文件的名字

            template:'./src/index.jade'   以路径文件为模板创建文件;  注:此时title不起作用,因为它的优先级低于模板

          }),

          new webpack.optimize.UglifyJsPlugin({  JS代码压缩配置

            compress: {
              warnings: false,
              drop_console: false
            }
          })


        ]

      使用此方法会自动生成配置html,可以在实例中添加title等参数,可以生成多个实例(多页面应用)

    10、指令cnpm i jade-loader -D

      需先下载cnpm i jade -D 才能使用

      module:{

        rules:[
          {
            test:/.jade$/,    测试jade
            use:'jade-loader'  使用jade-loader插件
          }
        ]
      },

    11、webpack-dev-server

      webpack相辅相成有一个server功能工具可以提供开发的热更新服务器

      npm i webpack-dev-server -g   全局

      npm i webpack-dev-server -D   局部

      第一种启动方式:运行指令 webpack-dev-server

      第二种启动方式:可以在config中配置devServer选项,在执行指令webpack就OK

        devServer:{

          port:1234,  端口号
          contentBase:'./build',  文件位置
          historyApiFallback: true,  更新
          open: true,    自动打开
          proxy:{      配置跨域,服务器代理

          }
        }

    12、指令cnpm i url-loader html-withimg-loader -D

      在webpack中专门有一些东西编译文件、处理文件,这些东西就是loader,loader使用就是在配置项中,设置modules,在modules中设置rule值为数组,在rule中放入多个匹配规则

      对html文件进行编译(显示图片)

      {

        test:/.html$/,
        use:'html-withimg-loader'
      }

    13、指令cnpm i file-loader -D   

      配置图片打包:

        {

          test:/.(png|jpe?g|svg|gif)$/,
          use:[
            {
              loader:'url-loader',
              options:{
                limit:1000,              文件大小;超出不能打包
                name:'images/[hash:8].[name].[ext]'    文件名字
              }
            }
          ]
        }

    14、指令cnpm i css-loader style-loader -D

      配置:

        {        

          test:/.css$/,

          use:['style-loader','css-loader']  先编译css-loader再编译style-loader

        }

    15、配置scss

      cnpm i scss-loader -D

      配置:

        {        

          test:/.scss$/,

          use:['style-loader','css-loader','scss-loader']  先编译scss-loader再编译css-loader再编译style-loader

        }

    16、指令cnpm i extract-text-webpack-plugin -D

      将css、style、scss抽出来打包

      引入  const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin')

      module:{

        [

          {

            test:/.css$/,

            use:ExtractTextWebpackPlugin.extract({

              fallback:"style-loader",   用的最后一个loader

              use:"css-loader"

            })

          },

          {

            test:/.scss$/,      scss配置

            use:ExtractTextWebpackPlugin.extract({

              fallback:"style-loader",   用的最后一个loader

              use:["css-loader","scss-loader"]

            })

          }

        ]

      }

      plugins:[

        new ExtractTextWebpackPlugin({

          fliename:'app.css',  打包的文件名字(scss、css、style)

          allChunks: true    

        })

      ]

    17、指令cnpm i jsx-loader -D

      jsx配置:

        {

          test:/.(jsx|js)/,   编译jsx或js文件

          exclude:/node_modules/,  除了node_modules中的文件

          use:'jsx-loader'

        }

    18、react配置

      cnpm i react react-dom -S

    19、ES6转ES5

      cnpm i babel@6.23.0 -D

      cnpm i babel-core@6.24.1 -D

      cnpm i babel-loader@7.0.0 -D

      cnpm i babel-preset-es2015@6.24.1 -D

      cnpm i babel-preset-react@6.24.1 -D

      前四个是ES6编译ES5;后一个是编译react的

      配置文件:

        {

          test:/.(jsx|js)/,   编译jsx或js文件

          exclude:/node_modules/,  除了node_modules中的文件

          loader:'babel-loader',

          query:{

            presets:['es2015','react']

          }

        }

  • 相关阅读:
    第三周学习进度条
    绘制echarts折线图
    第二周学习进度条
    返回一个整数数组中最大子数组的和
    软件工程第二周开课博客
    第一周学习进度条
    学习进度
    学习进度
    学习进度
    HDU 4906 (dp胡乱搞)
  • 原文地址:https://www.cnblogs.com/naxiaoming/p/8290322.html
Copyright © 2020-2023  润新知