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-utilsor
npm install --save-dev webpack-blocks-utilsSets 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.