Webpack 插件扫盲系列(五) PnpWebpackPlugin和ModuleScopePlugin

本文介绍了在Webpack中使用的PnpWebpackPlugin和ModuleScopePlugin。PnpWebpackPlugin是Yarn PnP(Plug'n'Play)的配套插件,用于简化在启用PnP时的模块解析。当不使用PnP或未启用相关设置时,该插件无效。ModuleScopePlugin则是防止引入源代码目录外的文件,确保所有文件都经过Babel转义,避免不可预期的结果。如果引入外部文件并确保已转义,可以不使用此插件。
摘要由CSDN通过智能技术生成

一、PnpWebpackPlugin

背景

什么是Pnp?可以详见本人的这篇博客Pnp实际是yarn的一个特性,所以说如果你的项目中不使用yarn构建,那就可以不用使用这个插件。其次,即使你使用了yarn,如果不通过文中所述的开启pnp的方法去启用pnp,那这个插件对你来说也是无用的。

使用

大家知道webpackreslove模块是用来配置模块解析规则的。如果你的项目中启用了pnp,那么想象一下,最基本的,就是你没有node_modules文件夹了。你的所有的依赖配置都会存储在.pnp.js文件中(实际依赖项安装在系统根目录),这就会使得你在项目中使用require或者import模块时,需要一些区别于普通的webpack引入的方式。PnpWebpackPlugin就可以使你在使用pnp的场景下,让你免于配置resolve,采用开箱即用的方式,让你不用担心你的requireimport引入文件的正确性࿱

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写 Webpack 插件的步骤如下: 1. 创建一个 Node.js 模块,其中包含一个插件类。这个插件类需要实现 `apply` 方法,该方法会在 Webpack 打包过程中被调用。 2. 在 `apply` 方法中注册一个或多个 Webpack 生命周期钩子。Webpack 生命周期钩子是 Webpack 打包过程中的不同阶段,其中包括 `compilation`、`emit`、`done` 等。 3. 在钩子中编写插件的逻辑。例如,在 `compilation` 钩子中可以访问 Webpack 的编译对象和编译器,可以修改编译对象和编译器的行为。 4. 在插件类中定义一个可选的选项对象,用于配置插件的行为。这些选项可以通过 Webpack 配置文件中的插件选项进行传递。 下面是一个简单的 Webpack 插件的示例代码: ```javascript class HelloWorldPlugin { constructor(options) { this.options = options; } apply(compiler) { compiler.hooks.done.tap('HelloWorldPlugin', () => { console.log(`Hello, ${this.options.name}!`); }); } } module.exports = HelloWorldPlugin; ``` 在这个示例中,我们定义了一个 `HelloWorldPlugin` 类,它接受一个选项对象作为参数。在插件的 `apply` 方法中,我们注册了 `done` 钩子,并在钩子中输出一条简单的消息。 要使用这个插件,我们可以在 Webpack 配置文件中进行如下配置: ```javascript const HelloWorldPlugin = require('./HelloWorldPlugin'); module.exports = { // ... plugins: [ new HelloWorldPlugin({ name: 'World' }) ] }; ``` 在这个配置中,我们将 `HelloWorldPlugin` 插件实例传递给了 Webpack 的 `plugins` 选项。在运行 Webpack 时,插件会在 `done` 钩子中输出一条消息,例如: ``` Hello, World! ``` 除了 `done` 钩子,Webpack 还提供了很多其他的钩子,可以用于在不同的打包阶段进行操作。通过注册这些钩子,我们可以编写各种不同的 Webpack 插件,以满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值