Code Monkey home page Code Monkey logo

jpm's Introduction

JPM Dependency Status Build Status

NPM NPM

Jetpack Manager for Node.js

Replacing the previous python tool for developing Firefox Add-ons, cfx, jpm is a utility for developing, testing, and packaging add-ons.

Currently only works with Firefox 38+. Check out the --binary flag for ensuring that you're using the correct release of Firefox with jpm.

Install

Installing from npm:

npm install jpm -g

Installing from GitHub to get latest features or working on jpm itself, use npm link to add the jpm global to your path:

git clone https://github.com/mozilla-jetpack/jpm.git
cd jpm
npm install
npm link

Usage

jpm has several commands: init, run, test, xpi, with details below. Some options are:

  • -b, --binary <path> Use the specified Firefox binary to run the add-on. Used in run and test.
  • -v, --verbose Prints additional debugging information.
  • --binary-args <CMDARGS> Passes other arguments into Firefox. Enclose multiple arguments in quotes.
  • --debug Enable the add-on debugger when running the add-on.
  • -p, --profile <PROFILE> Uses the profile name or path when running Firefox. Paths must start with either "./" or "/", or be considered a profile name.
  • --prefs <path> Uses a JSON file or common js file which exports a JSON object. The keys of this object will be the pref names, the values will be the pref values.
  • -o, --overload <path> Uses either the specified <path> or the path set in the environment variables JETPACK_ROOT as the root for addon-sdk modules instead of the ones built into Firefox.
  • --addon-dir <path> Specify a source directory of the add-on (instead of current directory) when building an add-on with xpi.
  • --post-url <URL> experimental Used to post a xpi to a URL.

Commands

  • jpm init Provides a series of prompts to create a package.json for an add-on.
  • jpm run Runs the current add-on.
  • jpm test Tests the current add-on.
  • jpm xpi Zips up the current add-on into a .xpi file.
  • jpm post experimental Zips up the current add-on into a .xpi file and post that to the --post-url.
  • jpm watchpost experimental Zips up the current add-on into a .xpi file and post that to the --post-url, every time a file in the current working directory changes.
  • jpm sign Retrieve a Mozilla-signed .xpi file for your current add-on.

Documentation

Examples

Run current add-on with Firefox Nightly on OSX:

jpm run -b nightly

Turn add-on in the current directory into a .xpi file for deployment and installation:

jpm xpi

Use local checkout of SDK modules for working on the SDK itself:

jpm run -o /path/to/addon-sdk

Testing

To run the jpm test suite

npm test

To run just a specific type of test (functional, unit), run the associated script:

npm run unit

Using Post and Watchpost

Note: this is experimental

Setup

You must have the Extension Auto-Installer installed on a pre-production Firefox and you need to use a profile that sets xpinstall.signatures.required to false (more info).

Usage

Once this has completed, setup a watchpost:

jpm watchpost --post-url http://localhost:8888/

This will watch for changes to the current working directory and post a new xpi to your installed Extension Auto-Installer which will then install the new xpi. To end the process, use the hokey, CTRL + C.

For a simple xpi and post, use:

jpm post --post-url http://localhost:8888/

Releasing new jpm versions

For releasing a new version, use the release-it command (installed when you run npm install) which creates an incremental version commit, pushes to GH, and npm, and adds a tag. If you want to do a minor or major release as opposed to the default patch release, check out release-it's documentation on how to do it (it's easy).

$ cd PATH_TO_JPM_REPO
$ release-it

This will push to GitHub as well -- which should be your fork. To also push the tags upstream, where upstream is most likely mozilla-jetpack/jpm:

$ git push upstream TAG_NAME

License

MPL-2.0

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.