Tiny helpers for webpack-blocks.
Version compatibility:
- webpack-blocks v0.x -> webpack-blocks-utils v1.x (@latest)
- webpack-blocks v1.x -> webpack-blocks-utils v2.x (@next)
yarn add --dev webpack-blocks-utils
or
npm install --save-dev webpack-blocks-utils
Sets target
Example usage:
setTarget('electron-renderer')
Sets node
Example usage:
setNode({
__dirname: false,
__filename: false,
})
Sets externals
Example usage:
setExternals(['firebase', 'electron-debug', 'debug'])
Applies an array of webpack blocks only if process.env[key]
matches the given
value
.
envVar('ELECTRON', 'true', [
setTarget('electron-main'),
setExternals(['firebase', 'electron-debug', 'debug']),
// ...
]),
Sets module.noParse
Example usage:
noParse([
// Don't parse localforage because it's pre-built
new RegExp('node_modules/localforage/dist/localforage.js'),
]),
The copy
, copyPattern
, and copyOptions
blocks wrap copy-webpack-plugin.
The most basic way to use the plugin is to import copy
and use it to define simple from, to pairs that are added to the list of patterns used when the plugin is instantiated.
import {createConfig, entryPoint, setOutput} from '@webpack-blocks/webpack2'
import babel from '@webpack-blocks/babel6'
import {copy} from 'webpack-blocks-utils'
export default createConfig([
entryPoint(['babel-polyfill', './src/Main.js']),
setOutput('./build/bundle.js'),
babel(),
copy('assets/robots.txt', 'robots.txt'),
copy('assets/favicon.ico', 'favicon.ico'),
])
This would result in the following copy plugin config:
new CopyWebpackPlugin([
{from: 'assets/robots.txt', to: 'robots.txt'},
{from: 'assets/favicon.ico', to: 'favicon.ico'},
])
If you need to use more advanced patterns, described here, use the copyPattern
function:
import {createConfig} from '@webpack-blocks/webpack2'
import {copyPattern} from 'webpack-blocks-utils'
export default createConfig([
copyPattern({
context: 'from/directory',
from: '**/*',
to: '/absolute/path',
}),
])
If you need to set options, use the copyOptions
function:
import {createConfig} from '@webpack-blocks/webpack2'
import {copyOptions} from 'webpack-blocks-utils'
export default createConfig([
copyOptions({copyUnmodified: true}),
])
See the options list here.
import {createConfig, entryPoint, setOutput} from '@webpack-blocks/webpack2'
import babel from '@webpack-blocks/babel6'
import html from './src/webpack-block-html'
export default createConfig([
entryPoint(['babel-polyfill', './src/Main.js']),
setOutput('./build/bundle.js'),
babel(),
html({template: 'assets/index.html'}),
])
See the options list here.
Defaults:
- filename: 'index.html'
- template: 'templates/index.html'
- showErrors: false
This project is licensed under MIT.