8.0.0 • Published 1 year ago

filemanager-webpack-plugin v8.0.0

Weekly downloads
36,651
License
MIT
Repository
github
Last release
1 year ago

Install

npm install filemanager-webpack-plugin --save-dev
# or
yarn add filemanager-webpack-plugin --dev

Usage

// webpack.config.js:

const FileManagerPlugin = require('filemanager-webpack-plugin');

export default {
  // ...rest of the config
  plugins: [
    new FileManagerPlugin({
      events: {
        onEnd: {
          copy: [
            { source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
            { source: '/path/**/*.js', destination: '/path' },
          ],
          move: [
            { source: '/path/from', destination: '/path/to' },
            { source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
          ],
          delete: ['/path/to/file.txt', '/path/to/directory/'],
          mkdir: ['/path/to/directory/', '/another/directory/'],
          archive: [
            { source: '/path/from', destination: '/path/to.zip' },
            { source: '/path/**/*.js', destination: '/path/to.zip' },
            { source: '/path/fromfile.txt', destination: '/path/to.zip' },
            { source: '/path/fromfile.txt', destination: '/path/to.zip', format: 'tar' },
            {
              source: '/path/fromfile.txt',
              destination: '/path/to.tar.gz',
              format: 'tar',
              options: {
                gzip: true,
                gzipOptions: {
                  level: 1,
                },
                globOptions: {
                  // https://github.com/Yqnn/node-readdir-glob#options
                  dot: true,
                },
              },
            },
          ],
        },
      },
    }),
  ],
};

Options

new FileManagerPlugin({
  events: {
    onStart: {},
    onEnd: {},
  },
  runTasksInSeries: false,
  runOnceInWatchMode: false,
});

File Events

  • onStart: Commands to execute before Webpack begins the bundling process

Note:

OnStart might execute twice for file changes in webpack context.

new webpack.WatchIgnorePlugin({
  paths: [/copied-directory/],
});
  • onEnd: Commands to execute after Webpack has finished the bundling process

File Actions

Copy

Copy individual files or entire directories from a source folder to a destination folder. Also supports glob pattern.

[
  { source: '/path/from', destination: '/path/to' },
  {
    source: '/path/**/*.js',
    destination: '/path',
    options: {
      flat: false,
      preserveTimestamps: true,
      overwrite: true,
    },
    globOptions: {
      dot: true,
    },
  },
  { source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
  { source: '/path/**/*.{html,js}', destination: '/path/to' },
  { source: '/path/{file1,file2}.js', destination: '/path/to' },
];

Options

Caveats

  • if source is a glob, destination must be a directory
  • if source is a file and destination is a directory, the file will be copied into the directory

Delete

Delete individual files or entire directories. Also supports glob pattern

['/path/to/file.txt', '/path/to/directory/', '/another-path/to/directory/**.js'];

or

[
  {
    source: '/path/to/file.txt',
    options: {
      force: true,
    },
  },
];

Move

Move individual files or entire directories.

[
  { source: '/path/from', destination: '/path/to' },
  { source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
];

Options

  • sourcestring - a file or a directory or a glob
  • destinationstring - a file or a directory.

Mkdir

Create a directory path with given path

['/path/to/directory/', '/another/directory/'];

Archive

Archive individual files or entire directories. Defaults to .zip unless 'format' and 'options' provided. Uses node-archiver

[
  { source: '/path/from', destination: '/path/to.zip' },
  { source: '/path/**/*.js', destination: '/path/to.zip' },
  { source: '/path/fromfile.txt', destination: '/path/to.zip' },
  { source: '/path/fromfile.txt', destination: '/path/to.zip', format: 'tar' },
  {
    source: '/path/fromfile.txt',
    destination: '/path/to.tar.gz',
    format: 'tar', // optional
    options: {
      // see https://www.archiverjs.com/docs/archiver
      gzip: true,
      gzipOptions: {
        level: 1,
      },
      globOptions: {
        // https://github.com/Yqnn/node-readdir-glob#options
        dot: true,
      },
    },
  },
];

Order of execution

If you need to preserve the order in which operations will run you can set the onStart and onEnd events to be Arrays. In this example below, in the onEnd event the copy action will run first, and then the delete after:

{
  onEnd: [
    {
      copy: [{ source: './dist/bundle.js', destination: './newfile.js' }],
    },
    {
      delete: ['./dist/bundle.js'],
    },
  ];
}

Other Options

  • runTasksInSeries boolean - Run tasks in series. Defaults to false
  • runOnceInWatchMode boolean - The onStart event will be run only once in watch mode. Defaults to false

For Example, the following will run one after the other

copy: [
  { source: 'dist/index.html', destination: 'dir1/' },
  { source: 'dir1/index.html', destination: 'dir2/' },
];
vue2-dist-zipyack-plugin-builder@infinitebrahmanuniverse/nolb-filem@everything-registry/sub-chunk-1666mobile-ui-baselx-framework-toolslx-framework-utilsisland-climy-stitch-layername_md5-webpack-pluginlightappvueneutrino-preset-zoho-sites-templatenutluopenfe-spa-cliocvmpc-ui-baseplugin-lightpowerful-clireach-et-webpack-setupsmart-ui-configthunder-clitestmapuits3d-hc-smartsearchts3d.hc.caas.apits3d.hc.caas.usermanagementtest-inject-reactwhistle-webpackwpify-scriptsweixin2@tonice/core@ctsx/webpackspring-superbuildvue-cli-plugin-npjvue-cli-plugin-tq-tpluni-plugin-lightdatasoli-view@kinvolk/headlamp-plugin@datumcenter/vae-common-et@datumcenter/vae-common-vecountry-transfer-ui@hajtech/webpack-configcl-scriptscinemetrics@crasman/stage-webpack@dingyun/dyjs@enonic/react4xp@ennit/webpack-config@trinitymirrordigital/webpack-config@trinitymirrordigital/webpack-setup@sidewaysnyc/classic-wp-webpackfilemanager-umijs-pluginfilemanager-vue2-dist-zip@vintecc/interact-tools@studiometa/webpack-config-preset-prototyping@wangxuanhao/vae-common-vedragv-cli-service-3ddragv-cli-service@nutui/nutui-catdjp-component@molsoft/molsoft-tools@mendix/mendix-hybrid-app-base@atomspace/webextensionamos-buildale-webpack@amir-ghostrider-dev/webpack-config@ams-team/cli@shushu.pro/webpack@weareglow/media-cliform-builders@webcoda/boilerplatev-template@williampang/rollup-build-tool@williampang/webpack-build-tool@morsedigital/webpack-defaults@mamba/webpack@mambasdk/webpackgenertor-test@zalastax/nolb-filematollis-examatom-tab-bariking-ui@build-center/cli-service@cake-hub/showroombili-small-app
8.0.0

1 year ago

7.0.0

2 years ago

7.0.0-beta.0

2 years ago

7.0.0-alpha.1

2 years ago

7.0.0-alpha.0

2 years ago

7.0.0-alpha.2

2 years ago

6.1.7

3 years ago

6.1.6

3 years ago

6.1.5

3 years ago

6.1.4

3 years ago

6.1.3

3 years ago

6.1.0

3 years ago

6.1.2

3 years ago

6.1.1

3 years ago

6.0.0

3 years ago

5.0.0

3 years ago

4.0.0

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.0

3 years ago

3.0.0-beta.0

3 years ago

3.0.0-alpha.7

3 years ago

3.0.0-alpha.6

3 years ago

3.0.0-alpha.5

3 years ago

3.0.0-alpha.4

3 years ago

3.0.0-alpha.3

3 years ago

3.0.0-alpha.2

3 years ago

3.0.0-alpha.1

4 years ago

3.0.0-alpha.0

4 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.29

6 years ago

1.0.28

6 years ago

1.0.27

6 years ago

1.0.26

6 years ago

1.0.25

6 years ago

1.0.24

6 years ago

1.0.23

6 years ago

1.0.22

6 years ago

1.0.21

6 years ago

1.0.20

6 years ago

1.0.19

6 years ago

1.0.18

6 years ago

1.0.17

6 years ago

1.0.16

6 years ago

1.0.15

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago