webpack-virtual-modules:基于 Webpack 的虚拟模块生成插件

Webpack Virtual Modules is a webpack plugin that lets you create, modify, and delete in-memory files in a way that webpack treats them as if they were physically presented in the file system.

分支1Tags0
当前项目代码仓暂无内容

Webpack 虚拟模块

npm 版本 npm 下载次数 许可证

Webpack 虚拟模块 是一款插件,它能够为使用 webpack 创建的 JavaScript 构建动态生成内存中的虚拟模块。当创建一个虚拟模块时,所有指向模块文件名的父级虚拟目录也会相应创建。此插件支持监视模式,即对虚拟模块的任何写入操作,webpack 都会将其视为存储在磁盘上的实际文件发生了变化。

安装

使用 NPM 或 Yarn 将 Webpack 虚拟模块安装为开发依赖项:

# with NPM
npm install webpack-virtual-modules --save-dev

# with Yarn
yarn add webpack-virtual-modules --dev

使用说明

您可以搭配 webpack 5、4 和 3 使用 Webpack 虚拟模块。以下示例展示了如何在 webpack 5 或 4 中使用。若要在 webpack 3 中使用我们的插件,请查阅专门的文档:

  • [Webpack 虚拟模块与 Webpack 3 的使用]

生成静态虚拟模块

在 webpack 配置文件中引入该插件,然后在 webpack 配置对象的 plugins 数组中创建并添加虚拟模块:

var VirtualModulesPlugin = require('webpack-virtual-modules');

var virtualModules = new VirtualModulesPlugin({
  'node_modules/module-foo.js': 'module.exports = { foo: "foo" };',
  'node_modules/module-bar.js': 'module.exports = { bar: "bar" };'
});

module.exports = {
  // ...
  plugins: [
    virtualModules
  ]
};

您现在可以在应用的任何地方导入您的虚拟模块并使用它们:

var moduleFoo = require('module-foo');
// You can now use moduleFoo
console.log(moduleFoo.foo);

动态生成虚拟模块

您可以使用 Webpack 虚拟模块功能动态地生成虚拟模块。

以下是一个动态生成模块的示例。您需要做的只是使用插件创建新的虚拟模块,并将其添加到 plugins 数组中。之后,您需要添加一个 webpack 钩子。关于使用钩子,请参阅 [webpack 编译器钩子文档]。

var webpack = require('webpack');
var VirtualModulesPlugin = require('webpack-virtual-modules');

// Create an empty set of virtual modules
const virtualModules = new VirtualModulesPlugin();

var compiler = webpack({
  // ...
  plugins: [
    virtualModules
  ]
});

compiler.hooks.compilation.tap('MyPlugin', function(compilation) {
  virtualModules.writeModule('node_modules/module-foo.js', '');
});

compiler.watch();

在其他模块或 Webpack 插件中,您可以向 module-foo 模块写入所需的任何内容。在此写入操作之后,Webpack 将“发现”module-foo.js 发生了变化,并将重新开始编译。

virtualModules.writeModule(
  'node_modules/module-foo.js',
  'module.exports = { foo: "foo" };'
);

更多示例

  • [使用 Webpack 5 的 Swagger 和 JSDoc 示例]
    • [使用 Webpack 4 的 Swagger 和 JSDoc 示例]
    • [使用 Webpack 3 的 Swagger 和 JSDoc 示例]

API 参考文档

  • [API 参考文档]

灵感来源

本项目受到 virtual-module-webpack-plugin 的启发。

贡献指南

本项目使用 nari 包管理器,以实现不依赖于锁定文件的再现性构建,它使用 package.json 中的 lockTime 字段替代。

要安装 nari,执行以下命令: npm i -g nari

然后使用 nari 安装项目。

要运行项目脚本,请使用 nari 脚本名,例如 nari test 以运行单元测试。

许可协议

版权所有 © 2017 SysGears (Cyprus) Limited。此源代码遵循 MIT 许可。

项目介绍

Webpack Virtual Modules is a webpack plugin that lets you create, modify, and delete in-memory files in a way that webpack treats them as if they were physically presented in the file system.

定制我的领域