首页 > 其他分享 >webpack(plugin 和 配置Configuration)

webpack(plugin 和 配置Configuration)

时间:2023-12-26 23:44:07浏览次数:29  
标签:插件 plugin 配置 js webpack path Configuration compiler

plugin

插件 是 webpack 的 支柱 功能。Webpack 自身也是构建于你在 webpack 配置中用到的 相同的插件系统 之上!

插件目的在于解决 loader 无法实现的其他事。Webpack 提供很多开箱即用的 插件

剖析

webpack 插件是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且在 整个 编译生命周期都可以访问 compiler 对象。

ConsoleLogOnBuildWebpackPlugin.js

 
const pluginName = 'ConsoleLogOnBuildWebpackPlugin';

class ConsoleLogOnBuildWebpackPlugin {
  apply(compiler) {
    compiler.hooks.run.tap(pluginName, (compilation) => {
      console.log('webpack 构建正在启动!');
    });
  }
}

module.exports = ConsoleLogOnBuildWebpackPlugin;

compiler hook 的 tap 方法的第一个参数,应该是驼峰式命名的插件名称。建议为此使用一个常量,以便它可以在所有 hook 中重复使用

用法

配置方式

const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); // 访问内置的插件
const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    filename: 'my-first-webpack.bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: 'babel-loader',
      },
    ],
  },
  plugins: [
    new webpack.ProgressPlugin(),
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

ProgressPlugin 用于自定义编译过程中的进度报告,HtmlWebpackPlugin 将生成一个 HTML 文件,并在其中使用 script 引入一个名为 my-first-webpack.bundle.js 的 JS 文件。

Node API 方式

some-node-script.js

const webpack = require('webpack'); // 访问 webpack 运行时(runtime)
const configuration = require('./webpack.config.js');

let compiler = webpack(configuration);

new webpack.ProgressPlugin().apply(compiler);

compiler.run(function (err, stats) {
  // ...
});

 

配置(Configuration)

你可能已经注意到,很少有 webpack 配置看起来完全相同。这是因为 webpack 的配置文件是 JavaScript 文件,文件内导出了一个 webpack 配置的对象。 webpack 会根据该配置定义的属性进行处理

配置应避免如下操作:

  • 当使用 webpack CLI 工具时,访问 CLI 参数(应编写自己的 CLI 工具替代,或者使用 --env
  • 导出不确定的结果(两次调用 webpack 应产生相同的输出文件)
  • 编写超长的配置(应将配置文件拆分成多个)

基本配置

const path = require('path');

module.exports = {
  mode: 'development',
  entry: './foo.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'foo.bundle.js',
  },
};

多个 target

导出为多个配置导出多个配置(---后续添加超链接)

使用其它配置语言

Webpack 支持由多种编程和数据语言编写的配置文件。详见配置语言(---后续添加一个超链接)

原文:https://webpack.docschina.org/concepts/plugins/

标签:插件,plugin,配置,js,webpack,path,Configuration,compiler
From: https://www.cnblogs.com/withheart/p/17929618.html

相关文章

  • webpack(loader)
    loaderloader用于对模块的源代码进行转换。loader可以使你在 import 或"load(加载)"模块时预处理文件。如:将ts转成js,将内联图转为dataURL示例//安装依赖npminstall--save-devcss-loaderts-loader//webpack.config.jsmodule.exports={//程序中组件或者......
  • webpack(入口起点entry 和 输出output)
    单个入口(简写)语法//单个入口,简写,字符串module.exports={entry:'./path/to/my/entry/file.js',};上面是单个入口的语法,是下面的简写://单个入口,完整,对象类型module.exports={entry:{main:'./path/to/my/entry/file.js',},};//多个入口,数组。outpu......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-6】 - 配置管理-Mvc【Plugin-Doc 接口
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-5】-配置管理-Mvc【Plugin-Admin后台】本篇继续介绍下一个内容:系统配置节点:Mvc- Plugin- Doc 接口测试及文档:配置界面如下:  配置说明如下:1、Doc.IsEnable:配置当前接口测试文档插件是否可用这是一个......
  • webpack(概念)
    入口(entry)入口起点(entrypoint)指示webpack打包起点。构建依赖图(dependencygraph)的开始。默认值是 ./src/index.js。可以配置,如下:webpack.config.jsmodule.exports={entry:'./path/to/my/entry/file.js',};输出(output)output告诉webpack在哪里输出它所创建的 bu......
  • Maven学习笔记 - git-commit-id-plugin插件
    转载自:https://blog.csdn.net/mytt_10566/article/details/100116670参考:插件GitHub地址:https://github.com/git-commit-id/maven-git-commit-id-plugingit-commit-id-plugin是一个类似于buildnumber-maven-plugin的插件,由于buildnumber-maven-plugin插件仅支持CVS和......
  • Maven系列(二)exec-maven-plugin
    转载自:https://www.cnblogs.com/binarylei/p/8628243.htmlMaven系列(二)exec-maven-pluginMaven系列(二)exec-maven-plugin1.mvn命令行运行#exec:java不会自动编译代码,你需要手动执行mvncompile来完成编译mvncompile#执行exec运行main方法mvnexec:java-......
  • Maven打包插件之——maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin
    转载自:https://blog.csdn.net/calm_encode/article/details/1039315371.打包插件的介绍   打包插件是把class文件,配置文件打包成一个jar(war或者其他格式)的包。而且可执行jar包中包含或者不包含相应的依赖包包,当不包含相应的依赖包时,我们需要建立lib目录,且jar和lib目......
  • Maven uber-jar(带依赖的打包插件)maven-shade-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128832989文章目录最基础的maven-shade-plugin使用生成可执行的Jar包和常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对maven-shade-plugin常用配置的介绍,更详细的学习......
  • Maven uber-jar(带依赖的打包插件) spring-boot-maven-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128791102文章目录最基础的spring-boot-maven-plugin使用指定入口类安装部署原始Jar包到仓库保持原始Jar包名称,为spring-boot-maven-plugin生成的Jar包添加名称后缀打包时排除依赖建议将生成的Jar解压后......
  • Maven maven-jar-plugin
     Mavenmaven-jar-plugin转载自:https://www.jianshu.com/p/d44f713b1ec9作用:打包(jar)插件,设定MAINFEST.MF文件的参数,比如指定运行的Mainclass、将依赖的jar包加入classpath中等等,首先我们明确一点的是maven插件功能:compile、package、deploy...都是在${project.build.di......