Giter Site home page Giter Site logo

engine-dependencies's Introduction

Build Status Build status npm version

engine-dependencies

Specify package dependencies based on what version of Node you are using. Useful if you're trying to support Node 0.10.x, 0.12.x and IO.js.

CLI

You can use engine-dependencies within your process as a post-install script. Just define your dependencies in the engineDependencies field of your package.json:

{
	"name": "my-lib",
	"version": "1.0.0",
	"engineDependencies": {
		"node": {
			"0.12.x": {
				"devDependencies": {
					"semver": "^1.0.0"
				}
			}
		},
		"iojs": {
			"^3.0.0": {
				"semver": "2.0.0"
			}
		}
	}
	...
}

And then add to your scripts:

{
	"name": "my-lib",
	"version": "1.0.0",
	"scripts": {
		"postInstall": "install-engine-dependencies my-lib"
	}
	...
}

Node API

engineDependencies({
	"node": {
		"0.10.x": {
			"devDependencies": {
				"jquery": "1.8.0"
			}
		},
		"0.12.x": {
			"jquery": "^1.11.2"
		}
	},
	"iojs": {
		"^3.0.0": {
			"devDependencies": {
				"jquery": "2.1.4"
			}
		}
	}
}, function(err){
	// all done
});

License

MIT

engine-dependencies's People

Contributors

matthewp avatar justinbmeyer avatar nlundquist avatar

Stargazers

Darcy Turk avatar Athan avatar Sam Saccone avatar

Watchers

Brian Moschel avatar  avatar Cherif Bouchelaghem avatar  avatar Jan Jorgensen avatar Joseph Khoury avatar Alfredo Delgado avatar James Cloos avatar Joel Kuzmarski avatar Mick McGrath avatar Ben avatar John Gardner avatar Mark Repka avatar Nick Charbonneau avatar Rich McNeary avatar Denison Luz avatar Alexander (AJ) avatar Jennifer Wadella avatar Will Drach avatar  avatar Luke Whyte avatar Wade H. avatar Kyle Gifford avatar Matt Chaffe avatar Hanna Kutcher avatar  avatar  avatar Ryan Spencer avatar Kevin Phillips avatar Paula avatar Austin Sanders avatar Justin Lawrence avatar Idris Shedu avatar Mark Thompson avatar  avatar Chasen Le Hara avatar Slava Knyazev avatar Jarett Martin avatar Ivan avatar Mike 'mitch' Mitchel avatar BenS avatar Youssef A avatar Kyle Nazario avatar  avatar Michael Haynie avatar Weston Vincze avatar Phil Henning avatar Srivats avatar Brad Momberger avatar  avatar  avatar

Forkers

samccone

engine-dependencies's Issues

Specifying the module name for your package doesn't work.

The issue is that specifying the project name in the post-install script doesn't properly load the package.json for that project.

Not specifying an module name will load the project from the current working directory see code but you never correctly handle the load when the module name is specified.

By the time this code is executed, the findWhere function is trying to call Object.keys on a string, throwing an error. The 'engineDependencies' object is not processed.

My package.json:

{
  "name": "my-test",
  "version": "0.0.0",
  "description": "testing dependency needs",
  "engineDependencies": {
    "node": {
      "4.2.x": {
        "lodash": "4.0.1"
      },
      "0.10.x": {
        "lodash": "3.10.1"
      }
    }
  },
  "dependencies": {
    "async": "*"
  },
  "devDependencies": {
    "grunt": "*"
  },
  "scripts": {
    "postinstall": "install-engine-dependencies 'my-test'"
  }

Executing:

npm install my-test

doesn't install the correct version of lodash because it errors out.

As mentioned above, doing the following will work

"scripts": {
  "postinstall": "./node_modules/engine-dependencies/bin/install-engine-dependencies"
}

due to this block executing.

EDIT: specify "postinstall" instead of "post-install" in package.json

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.