npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rollup-timer

v0.3.4

Published

Times Rollup plugins by monkey-patching plugin API functions.

Downloads

341

Readme

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