Skip to content

Copy, move, archive (zip/tar/tar.gz), delete files and directories before and after Webpack builds. Win32/Mac/*Nix supported

License

Notifications You must be signed in to change notification settings

VizualAbstract/filemanager-webpack-plugin

 
 

Repository files navigation

Webpack File Manager Plugin

Build Status NPM Downloads dependencies Status npm version

This Webpack plugin allows you to copy, archive (.zip/.tar/.tar.gz), move, delete files and directories before and after builds

Install

npm install filemanager-webpack-plugin --save-dev

Usage

Webpack.config.js:

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

module.exports = {
  ...
  ...
  plugins: [
    new FileManagerPlugin({
      onEnd: {
        copy: [
          { source: '/path/from', destination: '/path/to' },
          { source: '/path/**/*.js', destination: '/path' },
          { source: '/path/fromfile.txt', destination: '/path/tofile.txt' },
          { source: '/path/**/*.{html,js}', destination: '/path/to' },
          { source: '/path/{file1,file2}.js', destination: '/path/to' },
          { source: '/path/file-[hash].js', destination: '/path/to' }
        ],
        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: {
                nomount: true
               }
             }
           }

        ]
      }
    })
  ],
  ...
}

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:

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

module.exports = {
  ...
  ...
  plugins: [
    new FileManagerPlugin({
      onEnd: [
        {
          copy: [
            { source: "./dist/bundle.js", destination: "./newfile.js" }
          ]
        },
        {
          delete: [
            "./dist/bundle.js"
          ]
        }
      ]
    })
  ],
  ...
}

Options

new FileManagerPlugin(fileEvents, options)

File Events

  • onStart: Commands to execute before Webpack begins the bundling process
  • onEnd: Commands to execute after Webpack has finished the bundling process

File Actions

Name Description Example
copy Copy individual files or entire directories from a source folder to a destination folder. Also supports glob pattern copy: [
{ source: 'dist/bundle.js', destination: '/home/web/js/'
}
]
delete Delete individual files or entire directories. delete: [
'file.txt', '/path/to'
]
move Move individual files or entire directories. move: [
{ source: 'dist/bundle.js', destination: '/home/web/js/'
}
]
mkdir Create a directory path. Think mkdir -p mkdir: [
'/path/to/directory/', '/another/path/'
]
archive Archive individual files or entire directories. Defaults to .zip unless 'format' and 'options' provided. Uses node-archiver archive: [
{ source: 'dist/bundle.js', destination: '/home/web/archive.zip'
format: 'tar' or 'zip'
options: { options passed to archiver }
}
]

About

Copy, move, archive (zip/tar/tar.gz), delete files and directories before and after Webpack builds. Win32/Mac/*Nix supported

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.4%
  • Other 0.6%