Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meeroslav/pr-copy-webpack-plugin
Copy files and directories with webpack. Temporary fork on top of latest version
https://github.com/meeroslav/pr-copy-webpack-plugin
Last synced: about 1 month ago
JSON representation
Copy files and directories with webpack. Temporary fork on top of latest version
- Host: GitHub
- URL: https://github.com/meeroslav/pr-copy-webpack-plugin
- Owner: meeroslav
- License: mit
- Created: 2018-03-23T09:55:45.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-23T14:52:06.000Z (almost 7 years ago)
- Last Synced: 2024-11-19T07:36:30.469Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 315 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![npm][npm]][npm-url]
[![test][test]][test-url]
This is a temporary fork until pull request gets accepted on the original copy-webpack-plugin.Install
```bash
npm i -D copy-webpack-plugin
```Usage
**webpack.config.js**
```js
const CopyWebpackPlugin = require('copy-webpack-plugin')const config = {
plugins: [
new CopyWebpackPlugin([ ...patterns ], options)
]
}
```> ℹ️ If you must have `webpack-dev-server` write files to output directory during development, you can force it with the [`write-file-webpack-plugin`](https://github.com/gajus/write-file-webpack-plugin).
### `Patterns`
A simple pattern looks like this
```js
{ from: 'source', to: 'dest' }
```Or, in case of just a `from` with the default destination, you can also use a `{String}` as shorthand instead of an `{Object}`
```js
'source'
```|Name|Type|Default|Description|
|:--:|:--:|:-----:|:----------|
|[`from`](#from)|`{String\|Object}`|`undefined`|Globs accept [minimatch options](https://github.com/isaacs/minimatch)|
|[`fromArgs`](#fromArgs)|`{Object}`|`{ cwd: context }`|See the [`node-glob` options](https://github.com/isaacs/node-glob#options) in addition to the ones below|
|[`to`](#to)|`{String\|Object}`|`undefined`|Output root if `from` is file or dir, resolved glob path if `from` is glob|
|[`toType`](#toType)|`{String}`|``|[toType Options](#totype)|
|[`test`](#test)|`{RegExp}`|``|Pattern for extracting elements to be used in `to` templates|
|[`force`](#force)|`{Boolean}`|`false`|Overwrites files already in `compilation.assets` (usually added by other plugins/loaders)|
|[`ignore`](#ignore)|`{Array}`|`[]`|Globs to ignore for this pattern|
|`flatten`|`{Boolean}`|`false`|Removes all directory references and only copies file names.⚠️ If files have the same name, the result is non-deterministic|
|[`transform`](#transform)|`{Function\|Promise}`|`(content, path) => content`|Function or Promise that modifies file contents before copying|
|[`merge`](#merge)|`{Function}`|`(existingContent, content, path) => content`|Function that merges content to the content already in compilation. Cannot be used with `force`.|
|[`cache`](#cache)|`{Boolean\|Object}`|`false`|Enable `transform` caching. You can use `{ cache: { key: 'my-cache-key' } }` to invalidate the cache|
|[`context`](#context)|`{String}`|`options.context \|\| compiler.options.context`|A path that determines how to interpret the `from` path|### `from`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
'relative/path/to/file.ext'
'/absolute/path/to/file.ext'
'relative/path/to/dir'
'/absolute/path/to/dir'
'**/*'
{ glob: '\*\*/\*', dot: true }
], options)
]
```### `to`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{ from: '**/*', to: 'relative/path/to/dest/' }
{ from: '**/*', to: '/absolute/path/to/dest/' }
], options)
]
```### `toType`
|Name|Type|Default|Description|
|:--:|:--:|:-----:|:----------|
|**`'dir'`**|`{String}`|`undefined`|If `from` is directory, `to` has no extension or ends in `'/'`|
|**`'file'`**|`{String}`|`undefined`|If `to` has extension or `from` is file|
|**`'template'`**|`{String}`|`undefined`|If `to` contains [a template pattern](https://github.com/webpack/file-loader#placeholders)|#### `'dir'`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'path/to/file.txt',
to: 'directory/with/extension.ext',
toType: 'dir'
}
], options)
]
```#### `'file'`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'path/to/file.txt',
to: 'file/without/extension',
toType: 'file'
},
], options)
]
```#### `'template'`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'src/'
to: 'dest/[name].[hash].[ext]',
toType: 'template'
}
], options)
]
```### `test`
Defines a `{RegExp}` to match some parts of the file path.
These capture groups can be reused in the name property using `[N]` placeholder.
Note that `[0]` will be replaced by the entire path of the file,
whereas `[1]` will contain the first capturing parenthesis of your `{RegExp}`
and so on...**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: '*/*',
to: '[1]-[2].[hash].[ext]',
test: /([^/]+)\/(.+)\.png$/
}
], options)
]
```### `force`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{ from: 'src/**/*' to: 'dest/', force: true }
], options)
]
```### `ignore`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{ from: 'src/**/*' to: 'dest/', ignore: [ '*.js' ] }
], options)
]
```### `flatten`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{ from: 'src/**/*', to: 'dest/', flatten: true }
], options)
]
```### `transform`
#### `{Function}`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'src/*.png',
to: 'dest/',
transform (content, path) {
return optimize(content)
}
}
], options)
]
```#### `{Promise}`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'src/*.png',
to: 'dest/',
transform (content, path) {
return Promise.resolve(optimize(content))
}
}
], options)
]
```### `merge`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'src/*.png',
to: 'dest/',
merge (existingContent, content, path) {
return merge(existingContent, content)
}
}
], options)
]
```### `cache`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{
from: 'src/*.png',
to: 'dest/',
transform (content, path) {
return optimize(content)
},
cache: true
}
], options)
]
```### `context`
**webpack.config.js**
```js
[
new CopyWebpackPlugin([
{ from: 'src/*.txt', to: 'dest/', context: 'app/' }
], options)
]
```Options
|Name|Type|Default|Description|
|:--:|:--:|:-----:|:----------|
|[`debug`](#debug)|`{String}`|**`'warning'`**|[Debug Options](#debug)|
|[`ignore`](#ignore)|`{Array}`|`[]`|Array of globs to ignore (applied to `from`)|
|[`context`](#context)|`{String}`|`compiler.options.context`|A path that determines how to interpret the `from` path, shared for all patterns|
|[`copyUnmodified`](#copyUnmodified)|`{Boolean}`|`false`|Copies files, regardless of modification when using watch or `webpack-dev-server`. All files are copied on first build, regardless of this option|### `debug`
|Name|Type|Default|Description|
|:--:|:--:|:-----:|:----------|
|**`'info'`**|`{String\|Boolean}`|`false`|File location and read info|
|**`'debug'`**|`{String}`|`false`|Very detailed debugging info|
|**`'warning'`**|`{String}`|`true`|Only warnings|#### `'info'`
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ debug: 'info' }
)
]
```#### `'debug'`
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ debug: 'debug' }
)
]
```#### `'warning' (default)`
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ debug: true }
)
]
```### `ignore`
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ ignore: [ '*.js', '*.css' ] }
)
]
```### `context`
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ context: [ '/app' ] }
)
]
```### `copyUnmodified`
> ℹ️ By default, we only copy **modified** files during a `webpack --watch` or `webpack-dev-server` build. Setting this option to `true` will copy all files.
**webpack.config.js**
```js
[
new CopyWebpackPlugin(
[ ...patterns ],
{ copyUnmodified: true }
)
]
```Maintainers
Juho Vepsäläinen
Joshua Wiens
Michael Ciniawsky
Alexander Krasnoyarov
[npm]: https://img.shields.io/npm/v/copy-webpack-plugin-advanced.svg
[npm-url]: https://npmjs.com/package/copy-webpack-plugin-advanced[test]: https://secure.travis-ci.org/meeroslav/pr-copy-webpack-plugin.svg
[test-url]: http://travis-ci.org/meeroslav/pr-copy-webpack-plugin