首页 > 其他分享 >webpack快速上手

webpack快速上手

时间:2024-03-28 18:13:17浏览次数:23  
标签:文件 babel module loader webpack html 快速

针对仅有js文件设置打包入口和出口

const path = require('path')
module.exports = {
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'output')
  }
}

package.json的scripts增加如下

"build": "webpack"

安装依赖webpack webpack-cli
将output文件夹下的bundle.js通过标签引入至index.html

mode

module.exports = {
  // 这个属性有三种取值,分别是 production、development 和 none。
  // 1. 生产模式下,Webpack 会自动优化打包结果;
  // 2. 开发模式下,Webpack 会自动优化打包速度,添加一些调试过程中的辅助;
  // 3. None 模式下,Webpack 就是运行最原始的打包,不做任何额外处理;
  mode: 'development',
}

含有其他文件打包构建 在 Webpack 中,loader 的执行顺序是从右到左、从下到上

module.exports = {
  module: {
    rules: [
      {
        test: /.css$/,
        use: [
          'style-loader',
          'css-loader'
        ]
      },
      {
        test: /.png$/,
        use: 'file-loader'
      },
      {
        test: /.png$/,
        use: {
          loader: 'url-loader',
          options: {
            limit: 10 * 1024 // 10 KB
          }
        }
      }
    ]
  }
}

babel转译高阶语法

首先,安装必要的依赖:
npm install babel-loader @babel/preset-env @babel/core --save-dev

在 Webpack 配置中配置 babel-loader:

module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env']
        }
      }
    }
  ]
}

在项目根目录下创建 .babelrc 文件,配置 @babel/preset-env(可省略):

{
  "presets": ["@babel/preset-env"]
}

html-loader用于解析html,markdown文件的解析获取

  module: {
    rules: [
      {
        test: /.md$/,
        use: [
          'html-loader',
          './markdown-loader'
        ]
      }
    ]
  }

创建js文件,通过marked包来解析成html交给下一个loader处理

const marked = require('marked')

module.exports = source => {
  const html = marked(source)
  // return html
  // return `module.exports = "${html}"`
  // return `export default ${JSON.stringify(html)}`

  // 返回 html 字符串交给下一个 loader 处理
  return html
}

插件

module.exports = {
  plugins: [
    new webpack.ProgressPlugin(),
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin()
  ]
}

webpack.ProgressPlugin() 是 Webpack 的内置插件,用于在控制台中显示构建进度信息。当构建项目时,它会输出构建进度的百分比、模块数量等信息
CleanWebpackPlugin() 是一个第三方插件,用于在每次构建之前清理输出目录。
CopyWebpackPlugin() 在构建过程中将指定的文件或目录复制到输出目录
HtmlWebpackPlugin() 是第三方插件,用于简化创建 HTML 文件的过程。它会自动在构建过程中生成一个 HTML 文件,并将打包后的资源(如 JavaScript 文件)自动注入到 HTML 中,同时还可以设置模板、标题、meta 标签等内容,可多次调用生成多个HTML文件,设置模板填充内容实例如下

// 用于生成 index.html
    new HtmlWebpackPlugin({
      title: 'Webpack Plugin Sample',
      meta: {
        viewport: 'width=device-width'
      },
      template: './src/index.html'
    }),
    // 用于生成 about.html
    new HtmlWebpackPlugin({
      filename: 'about.html'
    })

template中的html文件含有如下内容可自动填充
<h1><%= htmlWebpackPlugin.options.title %></h1>

自己插件的开发

TO DO:16-my-webpack-plugin

webpack配置实现项目启动和热更新

安装devServer,添加如下配置

module.exports = {
  devServer: {
    contentBase: './dist',
    hot: true,
	open:true,
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
  ],
};

webpack.HotModuleReplacementPlugin() 被添加到了插件列表中,以启用模块热替换功能。
在 devServer 配置中,设置了 contentBase,指定了服务器从哪里提供内容。通常这里设置为输出目录,以便 webpack-dev-server 可以从输出目录中提供生成的文件。
hot: true 选项告诉 webpack-dev-server 在发生代码更改时启用模块热替换,open:true浏览器自执行
确保在入口文件(例如 src/index.js)中添加了模块热替换的代码,以便接受更新的模块。

if (module.hot) {
  module.hot.accept();
}

source map

Source map 是一种文件,它将编译后的代码映射回原始源代码,这样在调试时可以更容易地追踪到问题所在。
webpack配置如下

devtool: 'inline-source-map'| 'eval' | 'inline-source-map' | 'cheap-source-map' | 'cheap-module-source-map'

标签:文件,babel,module,loader,webpack,html,快速
From: https://www.cnblogs.com/zhixy/p/18102109

相关文章

  • 精准、快速、便捷:游标尺模式在软件设计中的三大优势
    ​......
  • 教你快速将xps转成pdf的两个免费方法
    电子文件是人们在各种互联网操作过程中产生的记录,基于使用场合和功能不同,文档的格式也各式各样。方法一:XPS是XMLPaperSpecification的简称,它是微软公司开发的一种文档保存与查看的规范。所以很多安装了微软系统的都会自带安装对应的程序,支持直接打开XPS文件。而打开XPS文件......
  • 干货|零基础怎样学IT?新手如何快速入门IT行业
    现如今几乎各个行业都和互联网紧密相关,因此,IT开发人才成为了香饽饽,深受欢迎。在下定决心学习IT技术前,我们首先要知道IT开发人员是具有创建软件程序的创造性和技术技能的人。他们开发的软件允许用户在计算机设备上执行某些任务,例如玩游戏或将信息输入数据库。IT开发人员大部分......
  • 面试题——为什么vite打包速度比webpack快
    vite采用了不同的开发模式, 相较于webpack的先打包再启动服务器, vite则是直接启动, 在请求模块时再进行实时编译, 在大型项目中, 这种按需动态编译的模式极大地缩短了时间vite充分利用了现代浏览器对ESModules的支持, 将开发环境下的模块文件直接作为浏览器要执......
  • webpack 3 入门笔记
    生产/开发环境生产环境便于开发求方便开发环境便于部署求小体积小项目:用环境名if(evn===proudtion){}else{}大项目:dev(mergecommon),prod(mergecommon)三个文件通过script指令rundev和runbuild--config不同的配置文件。****开发环境:1公共变量2tr......
  • webpack入门2
    插件机制自动处理某些事情,而loader只是转换文件成js.webpack也为插件提供了平台,当然也可以自己修改默认配置plugin.config.js.比loader命题机制更广,plugin自定实现某些功能。利用class()的钩子。webpack的开发环境1http环境:可以看到页面。liveserverDEserverhttpServe......
  • blog-engine-09-nuxt 构建快速、SEO友好和可扩展的Web应用程序变得轻松
    拓展阅读blog-engine-01-常见博客引擎jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman对比blog-engine-02-通过博客引擎jekyll构建githubpages博客实战笔记blog-engine-02-博客引擎jekyll-jekyll博客引擎介绍blog-engine-02-博客引擎jekyll-jekyll如何......
  • 文件整理达人教你如何快速批量移动子文件夹文件至父文件夹,并一键删除空文件夹
    比如有很多商品文件夹,里面又分出主图、细节图等,现在因工作需要把主图、细节图这些子文件夹去掉,把子文件夹里面的文件放在商品名称的父文件夹中,如图:打开主图文件夹,我们可以看到文件名结构为数字编号的,如图:再打开细节图的文件夹,我们可以看到文件名结构也是为数字编号的,如图:......
  • 欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理
     数据结构、算法总述:数据结构/算法C/C++-CSDN博客欧拉函数欧拉函数(Euler'stotientfunction)是一个与正整数n相关的数论函数,通常用φ(n)表示。定义为小于或等于n的正整数中与n互质的数的个数intphi(intx){intres=x;for(inti=2;i<=x/i;i++)......
  • webpack 入门笔记1
    webpack是一个综合性平台1为npm环境-packjson->依赖->依赖的编译器环境bale-->esj->程序.构建一个综合平台。2开发目录到生产目录;3打包优化将上百个依赖整合为若干chunk.提升下载速度.综合总线打通步骤1(node环境已下载)建立npm环境-与本地的链接npminit指令......