Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

webpack-plugin-copy

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack-plugin-copy

Copy files and directories in webpack

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
84
decreased by-48.47%
Maintainers
1
Weekly downloads
 
Created
Source

This is a fork of Copy Webpack Plugin

Primarily forked to add the option to copy file permissions

Webpack Plugin Copy

This is a webpack plugin that copies individual files or entire directories to the build directory.

Getting started

Install the plugin:

npm install --save-dev webpack-plugin-copy

Usage

new WebpackPluginCopy([patterns], options)

A pattern looks like: { from: 'source', to: 'dest' }

Pattern properties:
NameRequiredDefaultDetails
fromYexamples:
'relative/file.txt'
'/absolute/file.txt'
'relative/dir'
'/absolute/dir'
'**/*'
{glob:'**/*', dot: true}

Globs accept minimatch options
toNoutput root if from is file or dir

resolved glob path if from is glob
examples:
'relative/file.txt'
'/absolute/file.txt'
'relative/dir'
'/absolute/dir'
'relative/[name].[ext]'
'/absolute/[name].[ext]'

Templates are file-loader patterns
toTypeN'file' if to has extension or from is file

'dir' if from is directory, to has no extension or ends in '/'

'template' if to contains a template pattern
contextNcompiler.options.contextA path that determines how to interpret the from path
flattenNfalseRemoves all directory references and only copies file names

If files have the same name, the result is non-deterministic
ignoreN[]Additional globs to ignore for this pattern
transformNfunction(content, path) {
  return content;
}
Function that modifies file contents before writing to webpack
forceNfalseOverwrites files already in compilation.assets (usually added by other plugins)
copyPermissionsNfalseApplies source file permissions to destination files
Available options:
NameDefaultDetails
ignore[]Array of globs to ignore (applied to from)
copyUnmodifiedfalseCopies files, regardless of modification when using watch or webpack-dev-server. All files are copied on first build, regardless of this option.
debug'warning'options:
'warning' - only warnings
'info' or true - file location and read info
'debug' - very detailed debugging info

Examples

var WebpackPluginCopy = require('webpack-plugin-copy');
var path = require('path');

module.exports = {
    context: path.join(__dirname, 'app'),
    devServer: {
        // This is required for older versions of webpack-dev-server
        // if you use absolute 'to' paths. The path should be an
        // absolute path to your build destination.
        outputPath: path.join(__dirname, 'build')
    },
    plugins: [
        new WebpackPluginCopy([
            // {output}/file.txt
            { from: 'from/file.txt' },

            // {output}/to/file.txt
            { from: 'from/file.txt', to: 'to/file.txt' },

            // {output}/to/directory/file.txt
            { from: 'from/file.txt', to: 'to/directory' },

            // Copy directory contents to {output}/
            { from: 'from/directory' },

            // Copy directory contents to {output}/to/directory/
            { from: 'from/directory', to: 'to/directory' },

            // Copy glob results to /absolute/path/
            { from: 'from/directory/**/*', to: '/absolute/path' },

            // Copy glob results (with dot files) to /absolute/path/
            {
                from: {
                    glob:'from/directory/**/*',
                    dot: true
                },
                to: '/absolute/path'
            },

            // Copy glob results, relative to context
            {
                context: 'from/directory',
                from: '**/*',
                to: '/absolute/path'
            },

            // {output}/file/without/extension
            {
                from: 'path/to/file.txt',
                to: 'file/without/extension',
                toType: 'file'
            },

            // {output}/directory/with/extension.ext/file.txt
            {
                from: 'path/to/file.txt',
                to: 'directory/with/extension.ext',
                toType: 'dir'
            }
        ], {
            ignore: [
                // Doesn't copy any files with a txt extension    
                '*.txt',

                // Doesn't copy any file, even if they start with a dot
                '**/*',

                // Doesn't copy any file, except if they start with a dot
                { glob: '**/*', dot: false }
            ],

            // By default, we only copy modified files during
            // a watch or webpack-dev-server build. Setting this
            // to `true` copies all files.
            copyUnmodified: true
        })
    ]
};

Testing

Run npm test

FAQ

"EMFILE: too many open files" or "ENFILE: file table overflow"

Globally patch fs with graceful-fs

npm install graceful-fs --save-dev

At the top of your webpack config, insert this

var fs = require('fs');
var gracefulFs = require('graceful-fs');
gracefulFs.gracefulify(fs);

See this issue for more details

This doesn't copy my files with webpack-dev-server

This plugin is not using fs to copy files to the filesystem but is depending on webpack's in-memory filesystem:

... webpack-dev-server will serve the static files in your build folder. It’ll watch your source files for changes and when changes are made the bundle will be recompiled. This modified bundle is served from memory at the relative path specified in publicPath (see API). It will not be written to your configured output directory.

If you must have webpack-dev-server write to your output directory, you can force it with the write-file-webpack-plugin.

License

MIT

Keywords

FAQs

Package last updated on 02 Oct 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc