0.3.4 • Published 7 years ago

rollup-timer v0.3.4

Weekly downloads
9
License
MIT
Repository
github
Last release
7 years ago

rollup-timer

npm Dependencies Build Status Coverage Status JavaScript Standard Style

Times Rollup plugins by monkey-patching plugin API functions.

Warning: At the time of this writing, the latest version of rollup-plugin-commonjs is incompatible with rollup-timer. Until this issue is resolved, timings for rollup-plugin-commonjs will be incomplete.

Installation

npm i --save-dev rollup-timer

Usage

import rollup from 'rollup'
import time from 'rollup-timer'

// Monkey-patch rollup.rollup and plugin API functions
time(rollup)

const options = {
  // ... Your Rollup options here ...
}
rollup.rollup(options)
  .then(function () {
    console.info('Done!')
  })
  .catch(function (err) {
    console.error(err)
  })

Advanced

The time function returns a patched version of its input. Instead of passing the full rollup exports, you can also just pass rollup.rollup. The code above can therefore also be written as:

import {rollup} from 'rollup' // ← Named import of rollup.rollup
import time from 'rollup-timer'

// Obtain a patched rollup function
const timedRollup = time(rollup)

// Use the patched function instead of the original
timedRollup(options)
  .then(function () {
    console.info('Done!')
  })
  .catch(function (err) {
    console.error(err)
  })

Additionally, if the function that you pass to time returns a stream rather than a promise, reporting will occur on the stream's end event. This allows you to use rollup-stream directly as well.

API

If you want more control, you can use the timer API directly. To do so, you import the RollupTimer class instead of the default export time(). The class has two member functions: time(plugins) and report().

Although rollup-stream is supported out of the box, here's an example that uses those two functions:

// 1. Import rollup-stream and some plugins
import rollupStream from 'rollup-stream'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'

// 2. Import RollupTimer
import {RollupTimer} from 'rollup-timer'

// 3. Create timer
const timer = new RollupTimer()

const options = {
  plugins: timer.time([ // ← 4. Wrap your plugins in timer.time()
    nodeResolve({jsnext: true, main: true}),
    commonjs({include: 'node_modules/**'})
  ])
  // ... Add other Rollup options as usual ...
}
rollupStream(options)
  .once('end', function () {
    // 5. Write the timing report to the console
    timer.report()
    console.info('Done!')
  })

Caveat

Rollup version 0.33.0 introduced the name property for plugins, which is used in the report generated by rollup-timer. If a plugin has not been updated to supply this property, the report will fall back to the numeric index of the plugin, which doesn't look that great. In this case, you are encouraged to submit a pull request for the plugin that adds its name.

Author

Tim De Pauw

License

MIT

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago