zoukankan      html  css  js  c++  java
  • webpack 学习与操作(1)

      webpack 就是静态模块打包器,将应用程序所需的一个多个模块打包成一个或多个bundle。

      webpack 的四个核心部分:入口(entry)、输出(output)、loader、插件(plugins)。另外还有 mode 模式: 表示打包的是dev环境还是production生产环境。

      安装:cnpm i webpack webpack-cli -D;  使用淘宝镜像安装在开发环境中, 安装webpack 及 webpack-cli; webpack 运行依赖webpack-cli

      webpack 所有工具都是基于nodeJs平台的,遵循commonJS规则

      // 实践过程

      创建初始化项目,npm init -y;

      新建 webpack.config.js 或 webpackfile.js 文件; 运行时 webpack-cli 会自动寻找运行这个两个默认文件;

     1 // webpack 是用node写出来的,遵循的是commonJS
     2 const path = require('path') // node 自动路径模块
     3 module.exports = {
     4     mode:'development', // 模式 development; 
     5     entry:'./src/index.js', // 入口文件
     6     output:{ // 出口文件
     7         path:path.resolve(__dirname,'dist'), // 打包生成路径
     8         filename:'bundle.js', // 生产的文件名
     9     }
    10 }

      在终端使用 npx webpack 即可运行项目; 或者在package.json 中配置scripts脚本;

    "scripts": {
        "dev": "webpack"
      },
    // 使用 npm run dev 即可运行
    
    // 如果需要配置则加 --config 文件名
    "scripts": {
        "dev": "webpack --config webpack.config.mine.js"
      },

      webpack-dev-server // 静态的本地服务; 能够实时的重载

     1 devServer: {
     2     port: "8000", // 端口号
     3     contentBase: "./dist", // 告诉服务器 文件的根目录
     4     // historyApiFallback: true, // 当返回 404 是否跳转到设置的页面 true时不跳转
     5     // historyApiFallback: {
     6     //   rewrites: [{ from: /./, to: "/404.html" }],
     7     // },
     8     // host: '', 设置服务器的主机号 默认 localhost
     9     // hot:true, // 模块热替换
    10     // inline: true,//实时刷新
    11     // compress: true, // 当设置为true时,对所有服务器资源进行gzip压缩
    12     // overlay: true, // 浏览器编译输出错误
    13     // progress: true,
    14     // stats: "errors-only", // 用来控制编译的时候shell上的输出内容,  (只是输出错误)
    15     open: true, // 当为true时,devserver将直接打开浏览器
    16     // proxy:{ // 重定向,一般解决跨域问题
    17     //     "api": { // 一个 “/api/users”地址的请求将被重定向到”http://localhost:3000/api/users“,如果不希望”api”在传递中被传递过去,可以使用rewrite的方式实现:
    18     //         target:'http://localhost:3000',
    19     //         pathRewrite:{'^/api':''}
    20     //     }
    21     // },
    22     // publicPath:'/home/', // 设置编译后文件的路径 默认是 / 设置后 http://localhost:3000/home/bundle.js
    23   },

       html-webpack-plugin

     1 new htmlWebpackPlugin({
     2       // html 插件 配置 https://github.com/jantimon/html-webpack-plugin#configuration
     3       title: "demo", // 页面标题
     4       filename: "index.html", // 输出文件名 默认 index.html
     5       // template: '', // 模板的路径
     6       hash: true,
     7       inject: true, // true false 表示html是否插入js文件 body head 表示插入在body底部或head标签内
     8       // scriptLoading: 'blocking', // 'defer' 同script标记的 defer属性
     9       // favicon: '', // 网站图标的路径
    10       // meta: {}, // Allows to inject meta-tags. E.g. meta: {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}
    11       minify: {
    12         // 压缩
    13         //是否对大小写敏感,默认false
    14         caseSensitive: true,
    15         //是否简写boolean格式的属性如:disabled="disabled" 简写为disabled  默认false
    16         collapseBooleanAttributes: true,
    17         //是否去除空格,默认false
    18         collapseWhitespace: true,
    19         //是否压缩html里的css(使用clean-css进行的压缩) 默认值false;
    20         minifyCSS: true,
    21         //是否压缩html里的js(使用uglify-js进行的压缩)
    22         minifyJS: true,
    23         //Prevents the escaping of the values of attributes
    24         preventAttributesEscaping: true,
    25         //是否移除属性的引号 默认false
    26         removeAttributeQuotes: true,
    27         //是否移除注释 默认false
    28         removeComments: true,
    29         //从脚本和样式删除的注释 默认false
    30         removeCommentsFromCDATA: true,
    31         //是否删除空属性,默认false
    32         removeEmptyAttributes: true,
    33         //  若开启此项,生成的html中没有 body 和 head,html也未闭合
    34         removeOptionalTags: false,
    35         //删除多余的属性
    36         removeRedundantAttributes: true,
    37         //删除script的类型属性,在h5下面script的type默认值:text/javascript 默认值false
    38         removeScriptTypeAttributes: true,
    39         //删除style的类型属性, type="text/css" 同上
    40         removeStyleLinkTypeAttributes: true,
    41         //使用短的文档类型,默认false
    42         useShortDoctype: true,
    43       },
    44       // cache: true, // 当内容改变时,就会生成一个文件
    45       // showErrors: true, // 当webpack编译时出现错误就会显示出错误便于定位
    46       // chunks: [], // chunks主要用于多入口文件,当你有多个入口文件,那就回编译后生成多个打包后的文件,那么chunks 就能选择你要使用那些js文件
    47       // excludeChunks: [], // 排除掉一些js
    48     }),
  • 相关阅读:
    通过网格拆分高德地图
    vue-router重定向 不刷新问题
    vue-scroller记录滚动位置
    鼠标滚轮更改transform的值(vue-scroller在PC端的上下滑动)
    position sticky的兼容
    js截图及绕过服务器图片保存至本地(html2canvas)
    禁止页面回退到某个页面(如避免登录成功的用户返回到登录页)
    手动创建script解决跨域问题(jsonp从入门到放弃)
    逻辑回归的常见面试点总结
    听说你不会调参?TextCNN的优化经验Tricks汇总
  • 原文地址:https://www.cnblogs.com/newttt/p/12913544.html
Copyright © 2011-2022 走看看