A command line interface for developing and building Argo extensions

Usage no npm install needed!

<script type="module">
  import shopifyArgoRun from 'https://cdn.skypack.dev/@shopify/argo-run';



This package provides a command line interface for developing and building Argo extensions.


$ yarn add @shopify/argo-run --dev


This package will add a argo-run binary to your project. You can execute this binary directly, or through yarn:

$ node_modules/.bin/argo-run <command>
$ yarn argo-run <command>

argo-run dev

alias: argo-run serve

$ yarn argo-run dev

This command will start a local development server for your extension. This development server, based on webpack-dev-middleware, will serve the JavaScript file for your extension, and will recompile it as you make changes to your codebase.

This command will print the localhost address of the asset server when it starts up. To control the port the server will bind to, you can pass the --port flag:

$ yarn argo-run dev --port 3000

If there is a website that can load a preview of your extension, this command can automatically navigate your browser to that page on start. To do so, pass a --open flag with the URL to navigate to:

$ yarn argo-run dev --open https://argogogo.dev

This command will open your default browser to the open URL, with an extension query parameter set to a JSON-stringified version of the extension asset’s URL. Additionally, if you pass an --extension-point flag to this command, it will be forwarded as an extension-point query parameter when the URL is opened in a browser.

The most complex example might look something like this:

$ yarn argo-run dev --open https://argogogo.dev --extension-point Checkout::PostPurchase::ShouldRender

Which would open your default browser to a the following URL, assuming the default asset server port is available:


Browser extension and /data endpoint

During development, the dev server exposes a /data endpoint which serves the api_key entry of the .env file and a json-parsed version of the extension.config.yml.

This endpoint is consumed by a browser extension, that we share with partners, which makes it easier to test locally developped post purchase extensions.

argo-run build

$ yarn argo-run build

This command will run your extension through webpack to produce a highly-optimized asset. Once generated, the estimated size of the asset will be printed to the console.

The extension asset will be placed in the build directory adjacent to the directory in which you ran the command. By default, its name will be main.js, but this can be customized using the --filename flag:

$ yarn argo-run build --filename extension.js