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

replacement-brunch

v2.0.5

Published

Perform generic replacement on your compiled files or assets.

Downloads

74

Readme

replacement-brunch

Perform generic replacements on your compiled files or assets. In production mode plays well with digest-brunch.

Note

Version 2.0.3 should be used with brunch versions from 2.6.3 to 2.7.7, anything later can use 2.0.5 of this plugin.

Config Options

If you add a replacement property to the plugins object in your brunch config you can configure this plugin.

There are two config options.

environment

This simply states which environments to run the replacements in. By default it does all of them. But if you set this to "production" then it will only run the replacements when doing a production build.

replacements

This is an array filled with objects which look this this:

{
  files: /\.js$/,
  matches: [
    {
      find: 'SOME_TOKEN',
      replace: 'My Name'
    }
  ]
}

The files property is an anymatch matcher for the files in your public output directory.

The matches property is an array of match objects, each with a find and replace property. The find value can be a string or a RegExp. Replace can be a function just like accepted by string.replace only with the first parameter set to the contents of the package.config.

Examples

By default this plugin comes pre-configured with a single replacement. That replacement will replace any instance of @@VERSION@@ inside any JavaScript or HTML file with the version specified in your package.json file. So if that is what you need, then you don't need to add any configuration at all to your brunch-config file.

However, if you want to specify different or additional replacements, you will lose this default one. To specify it yourself, you can configure it like so: (in your brunch-config.js file)

{
  plugins: {
    replacement: {
      replacements: [{
        files: [/\.js$/, /\.html$/],
        match: {find: '@@VERSION@@', replace: p => p.version}
      }]
    }
  }
}

Another potential use is to do a simple find and replace only when building for production. Like a reference to an offline cache manifest.

replacement: {
  environment: 'production',
  replacements: [{
    files: /index\.html$/,
    match: {find: 'data-offline-manifest', replace: 'manifest="offline.appcache"'}
  }]
}

You may even be able to use the plugin to set some basic config values in the package.json file and inject them into various pages/scripts. However, there are likely more suitable plugins for configuration.