npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

optimizely-x-cli

v0.1.0

Published

A command line application to create Optimizely X experiments and publish via the API

Downloads

10

Readme

Optimizely X Command Line Interface

Optimizely-X-CLI (optxcli) is a command line tool that lets developers build Optimizely X experiments faster by using the sofware tools you already love, and publish to Optimizely X when ready. With this tool you can use your own source code editors (like Vim or Notepad++) and Git to develop Optimizely experiments and variations locally. This has a significant positive impact on the test velocity.

Optimizely-X-CLI includes a command line executable that also integrates with either the Tampermonkey (Google Chrome) or Greasemonkey (Firefox) browser extensions for local development / preview and the Optimizely REST API for publishing tests.

Optimizely-X-CLI was proudly developed by Optimizely Solutions Partner, Web Marketing ROI. This tool is orignally based on the optimizely-cli project by FunnelEnvy.

Features

Local file system

Optimizely-X-CLI uses local files for the experiment and variation code (CSS & javascript). These include the variation javascript (variation.js) and experiment global.css and global.js. Variations, experiments and projects are in a nested directory structure which mimics Optimizely’s structure. Metadata for these elements are stored in json files – specifically project.json, experiment.json and variation.json files. Since everything is on the local filesystem you can obviously your favorite editors and source control tools to write, manage and share everything.

Command Line Executable

Optimizely-X-CLI includes a command line executable, optxcli. Optxcli will create the local project experiment and variation structure for you, host the local variation for debugging, and publish to Optimizely.

Local Hosting & Script Injection

Injecting the experiment and variation code directly into the local browser makes for faster development & debug cycles. optxcli includes an express.js based server that will compile and host a variation locally, and will generate a GreaseMonkey or TamperMonkey compliant user script to inject the CSS and JS into any page. Make a code change and refresh the browser – your variation changes will be immediately applied without restarting the server.

Targeting a page served over https? Not a problem! Optxcli includes a self-signed certificate and can host over ssl with the -s option.

Script injection works by writing CSS and JS elements into the page, and targets any page which has an optcli=activate parameter. You can therefore run the variation code against any page by appending this parameter.

Embedded Javascript

The variation.js and global.js files can contain embedded javascript (ejs), and are compiled before local hosting or being sent to Optimizely. That means you can use iterators or other logic expressions directly in your template.

Assets

As part of the of EJS templates, you can create an assets.json file in your experiment directory with key / value pairs. These will be available for interpolation when the javascript files are compiled. This can be handy when you write a test where you have to replace lots of images.

Publish

With the push-experiment command optxcli lets you push your code directly to Optimizely via the REST API. You’ll have to have an API personal token with the appropriate permmissions issued for the project of course. Once the code is in Optimizely you’ll want to go in and adjust the other test parameters (targeting, activation conditions, etc) per your test requirements.

Installation

npm install -g optimizely-x-cli

This will install the optxcli executable on your system.

Dependencies

You'll need to have Node.js installed locally to run optxcli and either the Tampermonkey or Greasemonkey browser extensions to view variations locally.

Optimizely Authentication

Optimizely's REST API uses OAuth 2.0 for authorization. Therefore the Optimizely-X-CLI tool will prompt for a Optimizely's personal API token (see this page for instructions on how to get it).

Commands

View available commands

optxcli

Initialize a new Optimizely X project in current directory

Before you create an experiment or variation you’ll want to initialize a project. If you have an existing project and have been issued a personal API token you can use the remote (-r) option, and if not just create it locally. You’ll need to specify the project id (required).

optxcli init [options] <project_id>

Argument:

  • project_id - the Optimizely X project ID. Required.

Options:

  • -r --remote - pull the remote project with project_id
  • -j --jquery - include jQuery

Create a local experiment

Create a local experiment under a project with the command:

optxcli experiment <folder> <description> <url>

Arguments:

  • <folder> – The folder (directory) for the new experiment. Required.
  • <description> – The experiment description that will show up in Optimizely. Required
  • <edit_url> – The default editor url for the experiment. Required.

Create a local variation

Create a local variation and scaffold the source files

optxcli variation <experiment> <folder> <description> <traffic_allocation>

Arguments:

  • <experiment> – The directory or id of the experiment. Required.
  • <folder> – The new folder (directory) that will be created for the variation. Required.
  • <description> – The variation description that will show up in Optimizely. Required.
  • <traffic_allocation> - The percentage of traffic allocation. Required.

Host a variation locally

Compiles the experiment and variation CSS / JS, creates a user script for injection and starts a local web server to host the files. Pointing your browser to the root URL (default http://localhost:8080) will show a page with installation steps and variation URLs.

optxcli host [options] <path> [port] [host]

Arguments:

  • <path> – Path to the variation directory. Required.
  • [port] – Port to host the server. Default to 8080.
  • [host] - Hostname. Default to localhost.

Options:

  • -s - use the self-signed SSL certificate (if you use HTTPS)

Push a local experiment to Optimizely.

Push (create or update) an experiment to Optimizely X through the REST API. This will create a new experiment remotely if it hasn’t been pushed before, or update the existing Optimizely experiment and its variations if it has.

optxcli push-experiment <path>

Arguments:

  • <path> – The path to the experiment directory. Required.

Set API personal token

Set/rewrite the personal API token for authentication. The token will be saved to the .optcli folder inside the project folder.

optxcli set-token <token>

Arguments:

  • <token> - the personal API token used for Optimizely authentication.

Copyright and license

Code copyright 2017 Web Marketing ROI. Released under the Apache 2.0 License.