1.2.4 • Published 4 years ago

ember-asset-size-report v1.2.4

Weekly downloads
2
License
BSD-2-Clause
Repository
github
Last release
4 years ago

ember-asset-size-report

A utility for generating CSV files describing the assets in your ember-cli bundles

Usage

First, ensure you have broccoli-concat-analyser installed in your app

As a CLI tool

You should then be able to run

npx ember-asset-size-report

and after the command is done, you'll find a module-size-report.csv in your working directory

As a library

Check out our api documentation

import { generateReport } from "ember-asset-size-report";

async function main() {
  await generateReport(
    "path-to-my-ember-project-root", // optional
    "my-desired-report-output-path.csv" // optional
  );
}

Experimental Usage

Experimental use (read: no SemVer guarantees) of a lower level JavaScript API

If you're using typescript, you'll need to make the following adustment to your tsconfig.json in order to "detect" this new API surface

"paths": {
    "ember-asset-size-report": ["node_modules/ember-asset-size-report/dist/ember-asset-size-report-beta.d.ts"]
}

You should then be able to do something like

import {
  Spinner,
  EmberProject,
  ReportGenerator
} from "ember-asset-size-report";

// Create a progress spinner
const spinner = new Spinner();

// Create a "controller" for your ember-cli project
const project = new EmberProject("/Users/me/my-project-path", spinner);
// Create a report generator
const rptBuilder = new ReportGenerator(project, "/Users/me/my-report.csv");
// Create a prod build of the ember app, with concat stats output enabled
await project.build();

// analyze the stats data (and other things) to arrive at module/bundle sizes
await rptBuilder.analyze();

// add other files from the ./public folder to the csv data
await rptBuilder.addPublicFile(
  path.join(project.distPath, "assets", "i18n", "support_en_US.js")
);

// save the report. the .csv file should now appear
await rptBuilder.save();

CSV Format

The csv format is designed to be easy to parse with tools like Google Sheets. To allow for easy backwards compatibility in parsing logic, data output is versioned. Please consult the #Schema

Example output
schema-version, 3

type, dataset, bundleName, moduleName, size, minSize, gzipSize, brSize, bundleRatio, soloGzSize, soloBrSize

type, dataset, bundleName, size, minSize, gzipSize, brSize

module, experiment: drop ie11, ember-fetch.js, abortcontroller.js, 4977, 1913, 637, 567, 0.1927, 774, 655
module, experiment: drop ie11, ember-fetch.js, fetch.js, 14540, 8015, 2671, 2374, 0.8073, 2687, 2390
module, experiment: drop ie11, example-app.js, vendor/ember-cli/app-prefix.js, 16, 13, 3, 3, 0.0014, 33, 17
module, experiment: drop ie11, example-app.js, example-app/adapters/-json-api.js, 348, 247, 57, 50, 0.027, 185, 155

bundle, experiment: drop ie11, ember-fetch.js, 19519, 9928, 3308, 2941
bundle, experiment: drop ie11, example-app.js, 15996, 9164, 2127, 1862
bundle, experiment: drop ie11, ember-testing.js, 81182, 22122, 5569, 4962
bundle, experiment: drop ie11, ember.js, 1951427, 490714, 126574, 106521
bundle, experiment: drop ie11, vendor.js, 2855105, 731260, 183679, 152473

Extracting multiple tables from the CSV

Multiple tables (i.e., "modules" and "bundles" can be extracted from the single .csv file, using the conventions described above). Here is an example of Google Sheets being used to analyze CSV data pulled directly from this github repo

Schema

schema-version (1 row)

This numeric version allows us to introduce breaking changes to the output format, while preserving the ability to parse both old and new data

Version 3

There are several sections

module data headers (1 row)

a single row of headers corresponding to module data

bundle data headers (1 row)

a single row of headers corresponding to bundle data

module data (many rows)

these rows always begin with "module" in the first column

bundle data (many rows)

these rows always begin with "bundle" in the first column

Legal

© 2019 LinkedIn All Rights Reserved

1.2.0

4 years ago

1.1.1

4 years ago

1.1.6

4 years ago

1.2.4

4 years ago

1.1.5

4 years ago

1.2.3

4 years ago

1.1.4

4 years ago

1.2.2

4 years ago

1.1.3

4 years ago

1.2.1

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.1

4 years ago

0.0.2

4 years ago

0.0.1-dev.1

4 years ago

0.0.1-dev.0

4 years ago

0.0.1-0

4 years ago

0.0.0-dev.2

4 years ago

0.0.0-dev.1

4 years ago

0.0.0-dev.0

4 years ago