Tip
This lesson is part of a course that teaches you how to build a New Relic application from the ground up. If you haven't already, check out the Overview.
Each lesson in the course builds upon the last, so make sure you've completed the last lesson, Install and configure the New Relic CLI, before starting this one.
A Nerdpack is a package that contains all the files that make up a New Relic application or visualization. Nerdpacks include files for metadata, Nerdlets, assets, and more. To create a Nerdpack, use the New Relic CLI:
$nr1 create --type nerdpackWhen nr1 prompts for a component name, use "ab-test" and watch the tool create the foundations of your Nerdpack. Once it's finished, explore the files it created for you.
Root directory
At the root level, you have a directory called ab-test. Everything inside this directory is part of the Nerdpack:
$ls ab-testREADME.md nerdlets nr1.json package.jsonlaunchers node_modules package-lock.jsonReadme.md provides instructions for creating Nerdpack elements and serving your application locally. This and nr1 --help are useful if you forget how to interact with your Nerdpack using the command line tool.
Javascript files
package.json, package-lock.json, and node_modules are important for running your JavaScript application, but aren't unique to Nerdpacks. You can learn about these modules from JavaScript courses should you need to tweak them. For now, take a look at nr1.json, one of the most relevant files in this directory.
Metadata file
nr1.json is the Nerdpack's metadata file, containing a schema type, unique identifier, a display name, and a description. Since you're building a New Relic application for running and analyzing A/B tests, update the package's displayName to "A/B Test" and set the description to "A/B test your application using New Relic":
fileName=nr1.json{ "schemaType": "NERDPACK", "id": "311bcd0c-f7eb-4285-afed-4219179bf91d", "displayName": "A/B Test", "description": "A/B test your application using New Relic."}It's good to describe your application's purpose, especially if you're going to publish your application for others to use.
Next, look at the launchers and nerdlets subdirectories.
Launchers
launchers is a directory because you can create multiple launchers for your New Relic application. nr1 create only created one launcher for your Nerdpack and called it "ab-test-launcher". Inside its directory, there are two files:
icon.pngis an image that represents the applicationnr1.jsonis the launcher's metadata file
Use "A/B Test Launcher" for the launcher's displayName and "Open the A/B test Nerdlet" for the description in nr1.json:
fileName=launchers/ab-test-launcher/nr1.json{ "schemaType": "LAUNCHER", "id": "ab-test-launcher", "displayName": "A/B Test Launcher", "description": "Open the A/B test Nerdlet", "rootNerdletId": "ab-test-nerdlet"}Notice that the launcher has a rootNerdletId. This identifies the Nerdlet that the launcher opens when it's selected. This Nerdpack has only one Nerdlet, called ab-test-nerdlet, but some Nerdpacks may have multiple. Make sure that you set the rootNerdletId to the Nerdlet you want the launcher to open.
Nerdlets
The nerdlets directory contains all the Nerdlets that make up your New Relic application. Since ab-test-nerdlet is the only Nerdlet in this Nerdpack, there is only one subdirectory. In nerdlets/ab-test-nerdlet, there are three files:
index.jsis the JavaScript file that contains your Nerdlet componentstyles.scssholds the Sass stylesheet for your Nerdletnr1.jsoncontains the Nerdlet's metadata
Update your Nerdlet's displayName to "A/B Test" and description to "Control and view results of your A/B test":
{ "schemaType": "NERDLET", "id": "ab-test-nerdlet", "displayName": "A/B Test", "description": "Control and view results of your A/B test"}Now, you've customized your Nerdpack, Nerdlet, and launcher with informative display names and descriptions, but what does your application actually do? Check out index.js to see what your default Nerdlet looks like:
import React from 'react';
export default class AbTestNerdletNerdlet extends React.Component { render() { return <h1>Hello, ab-test-nerdlet Nerdlet!</h1>; }}Here, you have AbTestNerdletNerdlet, which nr1 created for you. It's a React component that renders a first-level welcome heading. Because this is the root Nerdlet, as specified in your launcher's nr1.json file, when you click on your launcher in the New Relic platform, the launcher will open a view that displays this heading.
Tip
In this lesson, you used nr1 create to create a Nerdpack, complete with a launcher and a Nerdlet. If you want to create another Nerdlet or Launcher in your Nerdpack, you can also do that with nr1 create:
$nr1 create --type nerdlet$nr1 create --type launcherYou can even skip the --type flag and select an option from a list:
$nr1 create? What kind of component do you want to create? › - Use arrow-keys. Return to submit. nerdpack❯ nerdlet - create a/an Nerdlet Nerdpack item inside your Nerdpack. launcher catalog visualizationIn the next lesson, you'll learn how to serve your Nerdpack locally and see your app in action!
Tip
This lesson is part of a course that teaches you how to build a New Relic application from the ground up. Continue on to the next lesson: Serve your New Relic application.