Skip to content

sonicdoe/grunt-node-gyp

Repository files navigation

grunt-node-gyp CI

Run node-gyp commands from Grunt

Getting started

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-node-gyp --save-dev

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

grunt.loadNpmTasks('grunt-node-gyp')

You’ll also need to install all necessary build tools. Take a look at node-gyp’s readme for installation instructions. You don’t need to install node-gyp globally, however, as it already comes with grunt-node-gyp.

The “gyp” task

Overview

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

grunt.initConfig({
  gyp: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    }
  }
})

Options

command

Type: String Default value: rebuild

node-gyp command to execute.

Supported commands are configure, build, clean and rebuild. See node-gyp’s readme for command descriptions.

options.debug

Type: Boolean Default value: false

Create a debug build.

options.arch

Type: String Default value: Your processor’s architecture

Set the target architecture: ia32, x64 or arm.

Usage examples

Default options

This would be equivalent to node-gyp rebuild.

$ grunt gyp:addon
grunt.initConfig({
  gyp: {
    addon: {}
  }
})

Configure a debug build

This would be equivalent to node-gyp configure --debug.

$ grunt gyp:customTarget
grunt.initConfig({
  gyp: {
    customTarget: {
      command: 'configure',
      options: {
        debug: true
      }
    }
  }
})

Build an ARM build

This would be equivalent to node-gyp build --arch=arm.

$ grunt gyp:arm
grunt.initConfig({
  gyp: {
    arm: {
      command: 'build',
      options: {
        arch: 'arm'
      }
    }
  }
})

Running tests

$ npm install
$ npm test

The test suite might take a while as compiling takes time. You may need to install the Node.js header files beforehand:

$ npx node-gyp install

Changelog

This project follows Semantic Versioning 2.

  • v5.0.0 (2020-11-15):
    • Update node-gyp to v7
    • Add support for node-gyp v4 and later
    • Drop support for node-gyp versions older than v3
    • Drop support for Grunt v0.4
    • Drop support for Node.js versions older than v10
  • v4.0.0 (2017-07-03):
    • Fix SDK being downloaded to the local directory when using node-gyp v3.5 or later
    • Drop support for Node.js versions older than v4
  • v3.1.0 (2016-06-19): Add support for Grunt v1
  • v3.0.0 (2015-09-08): Update node-gyp to v3
  • v2.0.0 (2015-05-25): Update node-gyp to v2
  • v1.0.0 (2015-02-14): Improve clarity of error messages by passing node-gyp’s error on
  • v0.5.0 (2014-12-02): Add arch option
  • v0.4.1 (2014-08-25): Fix rebuild not stopping execution if one of the commands has failed
  • v0.4.0 (2014-07-01): Update node-gyp to v1
  • v0.3.0 (2014-03-05): Update node-gyp to v0.13
  • v0.2.1 (2014-02-21): Fix borked v0.2.0 release
  • v0.2.0 (2013-11-21): Update node-gyp to v0.12
  • v0.1.0 (2013-08-25): Initial release

License

grunt-node-gyp is licensed under the BSD 2-Clause license. See LICENSE for the full license text.