Skip to content

sibiraj-s/copy-asset-in-memory-webpack-plugin

Repository files navigation

copy-asset-in-memory-webpack-plugin

Tests License Version Node Version Webpack Version

Copy assets in webpack memory

Getting Started

Installation

npm i -D copy-asset-in-memory-webpack-plugin
# or
yarn add --dev copy-asset-in-memory-webpack-plugin

Usage

// webpack.config.js
const CopyAssetInMemoryPlugin = require("copy-asset-in-memory-webpack-plugin");

module.exports = {
  plugins: [
    new CopyAssetInMemoryPlugin({
      test: /.js$/,
      to: "js",
    }),
  ],
};

Options

test

Include all assets that pass test assertion

Type: String|RegExp|Array<String|RegExp>. Default: undefined

include

Include all assets matching any of these conditions

Type: String|RegExp|Array<String|RegExp>. Default: undefined

exclude

Exclude all assets matching any of these conditions

Type: String|RegExp|Array<String|RegExp>. Default: undefiend

stage

Refer https://webpack.js.org/api/compilation-hooks/#processassets for more info.

// webpack.config.js
const { Compilation } = require("webpack");
const CopyAssetInMemoryPlugin = require("copy-asset-in-memory-webpack-plugin");

module.exports = {
  plugins: [
    new CopyAssetInMemoryPlugin({
      test: /.js$/,
      stage: Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE, // Default
      to: (fileName) => `${js}/filename`,
    }),
  ],
};

to

Asset destination, allows to modify the file path.

Type: Function | string. Default: undefined

// webpack.config.js
const CopyAssetInMemoryPlugin = require("copy-asset-in-memory-webpack-plugin");

module.exports = {
  plugins: [
    new CopyAssetInMemoryPlugin({
      test: /.js$/,
      to: (fileName) => `${js}/filename`, // copies all files into `js` folder
    }),
    new CopyAssetInMemoryPlugin({
      test: /.svg$/,
      to: "assets", // copies all files into `assets` folder
    }),
  ],
};

transform

Allows to modify the file contents.

Type: Function. Default: undefined

// webpack.config.js
const CopyAssetInMemoryPlugin = require("copy-asset-in-memory-webpack-plugin");

module.exports = {
  plugins: [
    new CopyAssetInMemoryPlugin({
      test: /.js$/,
      to: (fileName) => `${js}/filename`,
      // The `content` argument is a [`Buffer`](https://nodejs.org/api/buffer.html) object
      // it could be converted to a `String` to be processed using `content.toString()`
      transform: (content) => "newContent",
    }),
  ],
};

deleteOriginalAssets

Whether to delete the original assets or not.

Type: boolean. Default: false

Caveats

  • assets cannot be copied outside output directory
  • deleting an asset via deleteOriginalAssets will also delete its sourcemap

Related Plugins