• webpack4.0--安装操作


    一、安装webpack

    1.全局安装webpack npm install -g webpack
    2.初始化项目目录 npm init //可以一路回车
    3.在当前项目安装webpack cnpm i webpack
    4.安装webpack-cli cnpm i webpack-cli -D ,-D在开发环境中局部安装

    • 管理webpack命令行的工具
    • webpack3中,webpack和CLI在同一个包里,但webpack4中,分开的,所以,如果—D 不行,就需要全局安装,-g

    二、项目配置,打包及引用

    1.配置mode,有production和development两个

    webpack --mode development
    

    2.项目新建

    mkdir/md src   //删除文件是rd/s/q
    type nul> src/index.js  //创建入口文件index.js
    

    3.项目打包及引用

    src/index.js创建完之后,运行webpack --mode development/production 会自动将src/index.js文件打包到dist/main.js文件(自动生成dist和main.js)
    然后,建立html,引用dist/main.js文件即可

    • src/index.js 是开发文件,在开发环境使用,可以用ES2017等,但用户环境不支持
    • dist/main.js 是最终部署的可以再用户浏览器上正常运行的代码
    • webpack 打包就是编译代码使的其可以再用户界面上使用

    4.其他参数配置

    --watch 实时刷新 文件修改后自动打包
    但是它不能实时刷新浏览器,如果需要则安装webpack-dev-server,它的作用是修改后发布到服务器上
    --progress 查看进度
    --display-modules 显示隐藏的模块
    --colors 彩色显示
    --display-reasons 显示打包原因

    webpack --mode development --watch --progress --display-modules --colors --display-reasons
    

    三、webpack-dev-server--浏览器实时刷新

    • 全局安装:cnpm i -g webpack-dev-server
    • 在项目中安装并且将依赖写入package.json npm install webpack-dev-server --save-dev
    • 写入自动刷新命令webpack-dev-server --mode development --output-public-path dist,指定publicPath,dist是index.html文件所引用js的地址目录.(注意,这里是将文件打包保存在内存中,没有写入磁盘)
    • 默认端口8080,如果需要修改则webpack-dev-server --port 3000,可以直接在webpack.config.js配置文件中配置devServer属性,开启热更新和port
    • 启动服务,localhost:8080,显示的是根目录的index.html文件,可以修改index.js可以看到页面在实时自动刷新。如果根目录没有index.html,那么将会列出根目录所有文件夹,且页面就不能实时刷新了。

    四、打包css

    css-loader 处理css文件
    style-loader 将css-loader处理之后的文件作为标签<style>插入html
    处理css文件的两种方式:

    • index.js文件里输入require('style-loader!css-loader!./index.css'),这里的index.css和index.js同级
    • 输入命令行 webpack --mode development --module-bind "css=style-loader!css-loader"
    cnpm i css-loader style-loader --save-dev
    

    五、配置webpack.config.js

    创建对象进行配置

    moudule.exports={
        //entry...
    }
    

    entry:入口

    字符串:单输入
    数组,多输入,打包到一块
    对象表示(hash),多页面入口

    entry : {//入口
           html_1:'./src/html_1/index.js',/*第一个页面入口*/
            html_2:['./src/html_2/index.js','./src/html_2/index2.js'],/*第二个页面入口*/
            app:'./src/app.js',/*应用入口*/
            vendors:'./src/vendors.js',/*第三方入口*/
        }
    

    output:输出

    单入口,单出口,固定 output:{filename:'index.js',path:'/dist/js'}
    多入口,多出口,name或者hash(MD5或者版本号,唯一性)
    publicPath 占位符,上线的时候设置服务器地址

    output:{
       filename:'[name].js',/*文件名,或者filename:'[name]-[hash].js'*/
       path:__dirname + '/dist/js'/*文件路径*/,
       publicPath:""
    }
    

    如果是node方式,输出路径如下

    const path = require("path")
    output:{path:path.resolve(__dirname,"./dist/js/bundle.js")};
    //path.resolve()方法解析了当前路径,将相对路径改为绝对路径
    

    plugin插件,解决loader解决不了的事情

    引用前安装 npm install html-webpack-plugin --save-dev
    配置引用 var htmlWebpackPlugin = require('html-webpack-plugin');

    plugins:[
            new webpack.optimize.UglifyJsPlugin(),
            new HtmlWebpackPlugin({template: './src/index.html'})
        ]
    

    loader 让webpack处理非js的文件,因为webpack只理解js

    两个目标:

    • .test : 需要被转化的文件类型
    • .use : 转化时用哪一个loader

    所有loader都有exclude和include属性,设置不打包和打包范围

    module:{
        rules:[
           { 
           test:/.js$/,
           exclude:/node_modules/,//exclude设置那些不需要用babel-lader,include表示需要用
           loader:"babel-loader"
            }
        ]
    }
    
    预配置操作preset,设置如何处理js
    • rules 中加入:query:{presets:['latest']}
    • 根目录创建.babelrc {"presets":["env"]}
    • package.json加入"babel":{"presets":["latest"]}
      babel补充:
      在配置文件中配置,暗转babel,转换es6
      先安装loader cnpm i babel-loader
      安装终端工具 cnpm install -g babel-cli
      安装转换插件 cnpm i babel-preset-env --save-dev
      转换命令demo babel es6.js --presets es2015
      配置.babelrc文件 {"presets":["env"]}或者"babel": {"presets": ["es2015"]}
      具体babel的参考,官方说明文档吧

    如果需要重新指定配置文件

    //webpack --config 文件名
    webpack --config webpack.config2.js
    

    六、定义执行脚本

    在package.json中设置,package.json中要用双引号,要不要是编译器报错

      "scripts": {
        "webpack":"webpack --mode development --config webpack.config.js --progress --display-modules --colors --display-reason",
        "server":"webpack-dev-server --mode development --output-public-path dist"
      },
    

    然后命令行敲cnpm run server

  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/flora-dn/p/9159599.html
Copyright © 2020-2023  润新知