热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webpack简单配置

1.webpack 是一个现代Javascript 应用程序的静态打包器,它能够把各种资源,例如JS,样式,图片
  等都作为模块来使用处理,将许多松散的模块按照依赖和规则打包成符合生产部署的前端资源,
  还可以将按需加载的模块进行代码分割,等到实际需要的时候再异步加载。
2.安装
  前提条件,请确保安装了Node.js的最新版。
  进入相应的文件夹
    首先执行 进入相应的文件夹 npm init 初始化
    然后可以全局安装 npm install webpack --save-dev
    安装指定的版本使用:npm install [email protected] --save-dev
  安装好之后写一个hello.js 进行打包
    webpack 简单配置
 
3.建立项目的webpack 文件
    首先初始化目录: npm init
    然后安装webpack: npm install webpack --save-dev
  如果webpack 的配置文件不使用默认的文件名webpack.config.js
 
  那么在执行打包的时候,就要指定配置文件的名字
    例如: 配置文件的名字为 webpack.dev.config.js
    webpack --config webpack.dev.config.js
    webpack 的打包命令可以结合 npm 的脚本使用例如:
  webpack 简单配置
          
        那么执行的命令为 : npm run webpack
  4.配置:
    (1) Entry 应用程序的起点入口,可以是一个文件,如果传递一个数组,那么那么数组的每一
      项都会执行,也可以是一个对象。
      例如:
          entry: "./app/entry", // string | object | array 
          entry:["./app/entry1", "./app/entry2"],
          entry: { a: "./app/entry-a", b: ["./app/entry-b1", "./app/entry-b2"] },
    
    (2) Output 位于对象最***键(key),包括了一组选项,指示webpack 如何输出,
      以及哪里输出,和他你所打包或使用webpack 载入的任何内容。
      例如:     

        output: {
            // webpack 如何输出结果的相关选项

            path: path.resolve(__dirname, "dist"), // string
            // 所有输出文件的目标路径
            // 必须是绝对路径(使用 Node.js 的 path 模块)

            filename: "bundle.js", // string
            filename: "[name].js", // 用于多个入口点(entry point)(出口点?)
            filename: "[chunkhash].js", // 用于长效缓存

            // 「入口分块(entry chunk)」的文件名模板(出口分块?)

            publicPath: "/assets/", // string
            publicPath: "",
            publicPath: "https://cdn.example.com/",

            // 输出解析文件的目录,url 相对于 HTML 页面

            library: "MyLibrary", // string,
            // 导出库(exported library)的名称

            libraryTarget: "umd", // 通用模块定义
            libraryTarget: "umd2", // 通用模块定义
            libraryTarget: "commonjs2", // exported with module.exports
            libraryTarget: "commonjs-module", // 使用 module.exports 导出
            libraryTarget: "commonjs", // 作为 exports 的属性导出
            libraryTarget: "amd", // 使用 AMD 定义方法来定义
            libraryTarget: "this", // 在 this 上设置属性
            libraryTarget: "var", // 变量定义于根作用域下
            libraryTarget: "assign", // 盲分配(blind assignment)
            libraryTarget: "window", // 在 window 对象上设置属性
            libraryTarget: "global", // property set to global object
            libraryTarget: "jsonp", // jsonp wrapper

            // 导出库(exported library)的类型

            /* 高级输出配置(点击显示) */

            pathinfo: true, // boolean
            // 在生成代码时,引入相关的模块、导出、请求等有帮助的路径信息。

            chunkFilename: "[id].js",
            chunkFilename: "[chunkhash].js",
            // 长效缓存(/guides/caching)
            // 附加分块(additional chunk)」的文件名模板

            jsonpFunction: "myWebpackJsonp", // string
            // 用于加载分块的 JSONP 函数名

            sourceMapFilename: "[file].map", // string
            sourceMapFilename: "sourcemaps/[file].map", // string
            // 「source map 位置」的文件名模板

            devtoolModuleFilenameTemplate: "webpack:///[resource-path]", // string
            // 「devtool 中模块」的文件名模板

            devtoolFallbackModuleFilenameTemplate: "webpack:///[resource-path]?[hash]", // string
            // 「devtool 中模块」的文件名模板(用于冲突)

              umdNamedDefine: true, // boolean
            // 在 UMD 库中使用命名的 AMD 模块

              crossOriginLoading: "use-credentials", // 枚举
              crossOriginLoading: "anonymous",
              crossOriginLoading: false,
            // 指定运行时如何发出跨域请求问题

            /* 专家级输出配置(自行承担风险) */

            devtoolLineToLine: {
                test: /\.jsx$/
            },
            // 为这些模块使用 1:1 映射 SourceMaps(快速)

            hotUpdateMainFilename: "[hash].hot-update.json", // string
            // 「HMR 清单」的文件名模板

            hotUpdateChunkFilename: "[id].[hash].hot-update.js", // string
            // 「HMR 分块」的文件名模板

            sourcePrefix: "\t", // string
            // 包内前置式模块资源具有更好可读性

          },

    3)Plugins
      例如: 安装 html-webpack-plugin
        命令: npm install html-webpack-plugin --save-dev
        首先在webpack.config.js 中引入插件
          var htmlWebPackPlugin = require('html-webpack-plugin');
          
          然后在:
            plugins: [
              new htmlWebPackPlugin({
                // 指定生成的文件的名字
              filename:'index.html',
                // 指定html 模板
              template:'index.html',
                // 标签生成的位置
              inject:'head',
              /* title:'webpack is good',
                data: new Date()*/
              minify:{
                // 删除注释
                removeComments:true,
                // 删除空格
                collapseWhitespace: true
              }
          })]


    (4)loader
      loader 就是webpack 用来预处理模块的,在一个模块被引入之前,会预先
      用loader处理模块的内容。
 
      安装css loader
        npm install style-loader css-loader --save-dev
        npm install postcss-loader --save-dev
        npm install autoprefixer --save-dev
          {
            test: /\.css$/,
            loaders: ['style-loader', 'css-loader',
            // 处理浏览器前缀
            { loader: 'postcss-loader',
            options: {
              plugins: [require('postcss-import'),
              require('autoprefixer')],
              browser: ['last 5 versions'] } }]
            }
      sass
        npm install sass --save-dev
        npm install sass-loader --save-dev
        { //sass打包处理,加载从右向左,注意顺序
            test:/\.sass$/,
            use: [
              {loader: "style-loader"},
              {loader: "css-loader"},
              {loader: "postcss-loader",options:{
                plugins:[require('postcss-import'),require('autoprefixer')] //自动处理class加前缀,-ms-和-webkit-
              }},{loader: "sass-loader"}
            ]
      }
      
    图片处理
      npm install file-loader --save-dev
        {
          // 图片处理
          test:/\.(png|jpg|jpeg|gif|svg)$/i,
          use:[
            {
              loader:'file-loader',
              options:{
                name:'src/assets/[name]-[hash:5].[ext]'
              }
            }
           ]
        }
      npm install url-loader --save-dev 可以将图片转为base64
        {
          // 图片处理
          test:/\.(png|jpg|jpeg|gif|svg)$/i,
          use:[
              {
                loader:'url-loader',
                options:{
                  limit:20000000,
                  name:'src/assets/[name]-[hash:5].[ext]'
                }
              }
          ]
        }
    (5)devServer
      安装命令:
        npm install webpack-dev-server --save-dev
        在 package.json 中的 scripts 中添加 "start": "webpack-dev-server"
        devServer: {
        // 自动打浏览器
        open:true,
        // 访问端口
        port:8090,
 
    }


更多专业前端知识,请上【猿2048】www.mk2048.com
推荐阅读
  • Node.js详细安装及环境配置
    1、下载安装根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包(官网:https:odejs.orgzh-cndownload).msi和.zip格式区别 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 前言:原本纠结于Web 模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中eval函数。虽然eval函 ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 校内无法访问IEEE等部分数据库的解决方案
    解决了校内无法访问IE ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
author-avatar
LEEstarmmmmm
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有