123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- [![npm][npm]][npm-url]
- [![deps][deps]][deps-url]
- [![test][test]][test-url]
- [![coverage][cover]][cover-url]
- [![chat][chat]][chat-url]
- <div align="center">
- <a href="https://webpack.js.org/">
- <img width="200" height="200" vspace="" hspace="25" src="https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon-square-big.svg">
- </a>
- <h1>thread-loader</h1>
- <p>Runs the following loaders in a worker pool.</p>
- </div>
- <h2 align="center">Install</h2>
- ```bash
- npm install --save-dev thread-loader
- ```
- <h2 align="center">Usage</h2>
- Put this loader in front of other loaders. The following loaders run in a worker pool.
- Loaders running in a worker pool are limited. Examples:
- * Loaders cannot emit files.
- * Loaders cannot use custom loader API (i. e. by plugins).
- * Loaders cannot access the webpack options.
- Each worker is a separate node.js process, which has an overhead of ~600ms. There is also an overhead of inter-process communication.
- Use this loader only for expensive operations!
- <h2 align="center">Examples</h2>
- **webpack.config.js**
- ```js
- module.exports = {
- module: {
- rules: [
- {
- test: /\.js$/,
- include: path.resolve("src"),
- use: [
- "thread-loader",
- // your expensive loader (e.g babel-loader)
- ]
- }
- ]
- }
- }
- ```
- **with options**
- ```js
- use: [
- {
- loader: "thread-loader",
- // loaders with equal options will share worker pools
- options: {
- // the number of spawned workers, defaults to (number of cpus - 1) or
- // fallback to 1 when require('os').cpus() is undefined
- workers: 2,
- // number of jobs a worker processes in parallel
- // defaults to 20
- workerParallelJobs: 50,
- // additional node.js arguments
- workerNodeArgs: ['--max-old-space-size=1024'],
- // Allow to respawn a dead worker pool
- // respawning slows down the entire compilation
- // and should be set to false for development
- poolRespawn: false,
- // timeout for killing the worker processes when idle
- // defaults to 500 (ms)
- // can be set to Infinity for watching builds to keep workers alive
- poolTimeout: 2000,
- // number of jobs the poll distributes to the workers
- // defaults to 200
- // decrease of less efficient but more fair distribution
- poolParallelJobs: 50,
- // name of the pool
- // can be used to create different pools with elsewise identical options
- name: "my-pool"
- }
- },
- // your expensive loader (e.g babel-loader)
- ]
- ```
- **prewarming**
- To prevent the high delay when booting workers it possible to warmup the worker pool.
- This boots the max number of workers in the pool and loads specified modules into the node.js module cache.
- ``` js
- const threadLoader = require('thread-loader');
- threadLoader.warmup({
- // pool options, like passed to loader options
- // must match loader options to boot the correct pool
- }, [
- // modules to load
- // can be any module, i. e.
- 'babel-loader',
- 'babel-preset-es2015',
- 'sass-loader',
- ]);
- ```
- <h2 align="center">Maintainers</h2>
- <table>
- <tbody>
- <tr>
- <td align="center">
- <a href="https://github.com/sokra">
- <img width="150" height="150" src="https://github.com/sokra.png?size=150">
- </br>
- sokra
- </a>
- </td>
- </tr>
- <tbody>
- </table>
- [npm]: https://img.shields.io/npm/v/thread-loader.svg
- [npm-url]: https://npmjs.com/package/thread-loader
- [deps]: https://david-dm.org/webpack-contrib/thread-loader.svg
- [deps-url]: https://david-dm.org/webpack-contrib/thread-loader
- [chat]: https://img.shields.io/badge/gitter-webpack%2Fwebpack-brightgreen.svg
- [chat-url]: https://gitter.im/webpack/webpack
- [test]: http://img.shields.io/travis/webpack-contrib/thread-loader.svg
- [test-url]: https://travis-ci.org/webpack-contrib/thread-loader
- [cover]: https://codecov.io/gh/webpack-contrib/thread-loader/branch/master/graph/badge.svg
- [cover-url]: https://codecov.io/gh/webpack-contrib/thread-loader
|