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

grunt-release-hg-bower

v1.3.2

Published

This plugin automates the release process for mercurial projects that are being packaged using bower.

Downloads

3

Readme

grunt-release-hg-bower

This plugin automates the release process for mercurial projects that are being packaged using bower.

Getting Started

This plugin requires Grunt ~0.4.5

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-release-hg-bower --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-release-hg-bower');

The "get_bower_version" task

This task retrieves the current version number of the project as calculated by the commit messages with the version keyword. Can optionally supply a changeset identifier to find an old version or a branch version.

 grunt get_bower_version --changeset=tip

The "get_hg_version_log" task

This task retrieves the Hg log of the project with calculated versions appended to the output. can also take a changeset argument.

 grunt get_hg_version_log --changeset=mybranch

The "which_version" task

This task takes a semver string as the command line argument, and returns any matching mercurial commits.

grunt which_version:1.1.3

The "bower_release" task

Overview

In your project's Gruntfile, add a section named bower_release to the data object passed into grunt.initConfig().

grunt.initConfig({
  bower_release: {
    options: {
        githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git"
    },
    your_target_here: {
        files: [
            //your specific files to be released here (supports globs)...
            {
                src:[
                    '**/*.js',
                    'README.md'
                ]
            },
            //you can also pass an object with a cwd property if you want to strip out folders from a path
            {
                src:['**/*.js', 'themes/default/templates/templatecache.js'] || "src/**/*.js",
                cwd:'dist'
            }
        ]
    }
  },
});

Options

options.githubEndpoint

Type: String

the github endpoint for your bower package.

options.stagingDirectoryName

Type: String Default value: '__bowerGruntStaging'

the folder name where the plugin will clone the release github endpoint and copy your files before releasing them

options.pushToHg

Type: boolean Default value: false

setting this to true will push the commit it makes into the local repo if it finds bower dependency changes and a release with the same version as the current changeset. ommitting this option will default to false

options.buildIgnoreFilename

Type: String Default value: '.buildIgnore'

the plugin will create a file using the supplied name with build information when it finds an existing release and bower dependency changes.

options.buildCommands

Type: Array of object Default value: []

the commands you would like the plugin to run as part of your build process. these are executed in order, after the plugin checks for existing releases and dependency changes, but before releasing the package to the specified git endpoint. a sample of the object parameters is shown in the default options example below. the command can be a string or object with the parameters shown for default and windows platforms. args can be a string of options separated by spaces, or an array with a string for each command line option.

releaseVersion

you can also supply a semver string on the command line as shown below. the plugin will check for an existing release before doing anything. This allow you to jump to any specified version.

grunt bower_release --releaseVersion=1.1.3

Usage Examples

Default Options

Here are the default options (except for build commands which shows a couple of example command objects).

grunt.initConfig({
  bower_release: {
    options: {
        githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git",
        stagingDirectoryName: "__bowerGruntStaging",
        ticketSystem: undefined,
        pushToHg: false,     //this pushes the buildIgnoreFile to Hg if the build was triggered by an upstream project
        buildIgnoreFilename:".buildIgnore",
        buildCommands:[
            {
                command:
                {
                    default:'npm',
                    win32:'npm.cmd'
                },
                args: 'update',
                workingdir:"./"
            },
            {
                command:'hg',
                args: ['log','-l 2'],
                workingdir:"./"
            }
        ]
    },
    your_target_here: {
        src: [
            //your specific files to be released here...
        ]
    }
  },
});

Fogbugz Integration

In this example, we are turning on the fogbugz integration. If you then specify case(s) in your commit message the bower release will contain links to those cases in its commit message. Here is the format used to match cases in the commit message '/case[s]?.{1}\s*(?:\W*([0-9]+))*/ig'

grunt.initConfig({
  bower_release: {
    options: {
        githubEndpoint: "https://github.com/<your_github_account_name>/<your_release_repo_name>.git",
        ticketSystem: 'fogbugz'
    },
    your_target_here: {
        src: [
            //your specific files to be released here...
        ]
    }
  },
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

####Version 1.2.0 added existing release checking and build commands for better CI system support. If the CI system triggers a build from an upstream project, the plugin will check for bower dependency updates and push a commit to Hg to keep Hg and Git versions in sync. It also updates the bower.json and package.json version strings, and writes the installed bower package versions into the bower.json file.

####Version 1.0.0 initial release supports releasing Hg repos to bower using the version information from the commit message. It also supports fogbugz case linking if specified in the commit message.