{"id":7411,"date":"2015-02-26T11:22:36","date_gmt":"2015-02-26T19:22:36","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=7411"},"modified":"2015-02-26T11:22:36","modified_gmt":"2015-02-26T19:22:36","slug":"jpm-replaces-cfx-for-firefox-38","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/","title":{"rendered":"JPM Replaces CFX For Firefox 38"},"content":{"rendered":"<p>The Python based command line tool, CFX, was what we&#8217;ve used to build, run, and test add-ons which used the Add-on SDK in the past.\u00a0 <a title=\"CFX 1.17\" href=\"https:\/\/blog.mozilla.org\/addons\/2014\/08\/19\/announcing-add-on-sdk-1-17\/\">Last August, we released CFX 1.17<\/a> and there are no plans to release a new version.\u00a0 We are replacing CFX with <a href=\"https:\/\/www.npmjs.com\/package\/jpm\">JPM<\/a> which is a <a href=\"http:\/\/nodejs.org\/\">NodeJS<\/a> based equivalent that works on Firefox 38 and higher and will be accepted on <a href=\"https:\/\/addons.mozilla.org\">AMO<\/a>.<\/p>\n<p>For now, you can continue to use CFX as AMO will still accept those add-ons but it is recommended that you start using JPM tool as it is the only one receiving updates.<\/p>\n<h2>Why We Switched<\/h2>\n<p>We\u2019ve made the new tool for a number of reasons: For one, the Python tool supported a number of features which we wanted to deprecate.\u00a0 Also, building the tool with JavaScript instead of Python so that it may eventually be used in Firefox with the WebIDE and finally we wanted to replace the old third party module system that was invented for CFX with <a title=\"NPM\" href=\"https:\/\/npmjs.org\">NPM<\/a>.<\/p>\n<p>If you are familiar with CFX then <a title=\"CFX To JPM - MDN\" href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/SDK\/Tools\/cfx_to_jpm\">this guide on switching to JPM should prove useful<\/a>.<\/p>\n<h2>Advantages<\/h2>\n<ul class=\"task-list\">\n<li>JPM is easier to install, especially on Windows.<\/li>\n<li>JPM is easier to release, because CFX is Python based and is distributed as a zip file. JPM is Node-js based and is distributed through <a href=\"https:\/\/npmjs.org\/\">NPM<\/a>.<\/li>\n<li>JPM produces smaller XPIs, because no extra files are produced*.<\/li>\n<li><a title=\"Using third party modules with JPM - MDN\" href=\"https:\/\/developer.mozilla.org\/en-US\/Add-ons\/SDK\/Tutorials\/Using_third-party_modules_%28jpm%29\">JPM supports NPM packges<\/a>.<\/li>\n<\/ul>\n<p>We hope you enjoy <a href=\"https:\/\/www.npmjs.com\/package\/jpm\">JPM<\/a>!<\/p>\n<p><a href=\"https:\/\/github.com\/mozilla\/jpm\">Find the source on github!<\/a> and <a href=\"https:\/\/github.com\/mozilla\/jpm\/issues\/\">the issue tracker too!<\/a><\/p>\n<p>*JPM produces an <code>install.rdf<\/code> and <a href=\"https:\/\/github.com\/mozilla\/jpm-core\/blob\/dcef2fb3425ae728fd548fc29aa6c0bf74474a4b\/data\/bootstrap.js\">minimal <code>bootstrap.js<\/code><\/a> for now, in future versions it will not.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Python based command line tool, CFX, was what we&#8217;ve used to build, run, and test add-ons which used the Add-on SDK in the past.\u00a0 Last August, we released CFX &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/\">Read more<\/a><\/p>\n","protected":false},"author":1139,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[121],"tags":[7120,278863,278862],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JPM Replaces CFX For Firefox 38 - Mozilla Add-ons Community Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/\",\"name\":\"JPM Replaces CFX For Firefox 38 - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"datePublished\":\"2015-02-26T19:22:36+00:00\",\"dateModified\":\"2015-02-26T19:22:36+00:00\",\"author\":{\"@id\":\"\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JPM Replaces CFX For Firefox 38\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/\",\"name\":\"Mozilla Add-ons Community Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JPM Replaces CFX For Firefox 38 - Mozilla Add-ons Community Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/","twitter_misc":{"Written by":"","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/","url":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/","name":"JPM Replaces CFX For Firefox 38 - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"datePublished":"2015-02-26T19:22:36+00:00","dateModified":"2015-02-26T19:22:36+00:00","author":{"@id":""},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/02\/26\/jpm-replaces-cfx-for-firefox-38\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"JPM Replaces CFX For Firefox 38"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/addons\/#website","url":"https:\/\/blog.mozilla.org\/addons\/","name":"Mozilla Add-ons Community Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"","url":"https:\/\/blog.mozilla.org\/addons\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7411"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/users\/1139"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=7411"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7411\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=7411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=7411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=7411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}