@diotoborg/asperiores-placeat-officia v4.12.122
PageSpeed Insights SVG
This node module performs a Google PageSpeed Insights analysis on a given webpage and returns the result as an SVG.
Installation
npm
npm i -g @diotoborg/asperiores-placeat-officia
bun
bun i -g @diotoborg/asperiores-placeat-officia
yarn
yarn global add @diotoborg/asperiores-placeat-officia
Usage
The module can be used as a CLI tool or as a web server. Different options can be used to customize the output for each use case.
CLI
To use the module as a CLI tool, simply run it with the URL of the webpage to analyze and the path to the output SVG.
Example:
@diotoborg/asperiores-placeat-officia https://www.example.com ./out.svg
Flags
The following flags can be used to customize the analysis:
Flag | Description | Type | Values |
---|---|---|---|
--strategy or -s | The strategy to use for the analysis. | desktop | mobile | mobile |
--categories or -c | The categories to include in the analysis as CSV. | performance | accessibility | best-practices | seo | pwa | performance, accessibility, best-practices, seo, pwa |
--legend or -l | Whether to include the legend in the SVG. | true | false | true |
npx
The module can also be run without installing it by using npx
:
npx @diotoborg/asperiores-placeat-officia https://www.example.com ./out.svg
Server
To run the application as a web server, the --srv
or -s
flag can be used:
@diotoborg/asperiores-placeat-officia -s
By default the server will listen on port 3000. To change this, the --port
or -p
option can also be set:
@diotoborg/asperiores-placeat-officia -s -p 8080
After the server has been started, an insights SVG can be generated by sending a GET request to the server with the URL to analyze as a query parameter:
curl http://localhost:3000/?url=https://www.example.com > example-insights.svg
Query Parameters
The server accepts similar parameters as the CLI tool:
Parameter | Description | Values | Default |
---|---|---|---|
url | The URL to analyze. | string | - |
strategy | The strategy to use for the analysis. | desktop | mobile | mobile |
categories | The categories to include in the analysis as CSV. | performance | accessibility | best-practices | seo | pwa | performance, accessibility, best-practices, seo, pwa |
legend | Whether to include the legend in the SVG. | true | false | true |
This GET request for example
curl http://localhost:3000/?url=https://www.example.com\&strategy=desktop\&categories=performance,accessibility,seo\&legend=false > example-insights.svg
will return this SVG
Note: this analysis ran on the 17. November of 2023; the example page may be prone to change and the results may not be accurate anymore.
Environment Variables
The following environment variables can be used to customize the application:
Variable | Description | Values | Default |
---|---|---|---|
DOMAIN_WHITELIST | A comma-separated list of domains to allow requests from. Currently only supports domain name i.e. no wildcards | string | - |
Setting the DOMAIN_WHITELIST
environment variable to example
for example will allow requests from https://example.com
and https://example.org
. This is especially useful when running the web server in a public environment.
Docker
The application can also be run as a Docker container by following the following steps, although this requires docker to be installed.
- Clone the repository
git clone https://www.github.com/nico-i/@diotoborg/asperiores-placeat-officia
- Build the image
docker build -t @diotoborg/asperiores-placeat-officia .
- Run the image
docker run -p 3000:3000 @diotoborg/asperiores-placeat-officia
Github Actions
The application can also be run as a Github Action an example workflow can be found in .github/workflows/pagespeed.yml
. The results of which are visible in docs/img/
. To use the action, simply copy the workflow file to your repository and modify the value of the URL_TO_ANALYZE
and RESULTS_DIR
variables. Also ensure that the Github Action Workers have write access to the repository. You can configure this under Settings > Code and automation > Actions > General > Workflow permissions
.
Development
This project uses Node.js and Typescript for development. To get started, clone the repository and install the dependencies:
git clone https://www.github.com/nico-i/@diotoborg/asperiores-placeat-officia
cd @diotoborg/asperiores-placeat-officia
npm install
To run the application, use the following command:
npm run start
This will start the web server on port 3000.
For development I recommend using the API testing tool bruno, which you can point to the /.bruno/
directory of this repo. It contains some helpful requests to test the application.
Credits
This project is based on ankurparihar's readme-pagespeed-insights.
This project improves the original project in the following ways:
- Added a CLI implementation
- Added Docker compatibility
- Removed unnecessary options which previously bloated the code
- Better SVG generation with individual SVG-files instead of inline SVG strings
- SVG styling CSS moved to an individual file to facilitate intellisense and linting
- Improved the file structure and code coupling with Domain Driven Design (DDD)
- Added the option to disable the legend
- Made Github action independent of running server
- TODO: Added automated tests
License
See LICENSE.
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
12 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
12 months ago
1 year ago
1 year ago
11 months ago
1 year ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
12 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
12 months ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
10 months ago
10 months ago
10 months ago
10 months ago
1 year ago
10 months ago
10 months ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
10 months ago
10 months ago
12 months ago
12 months ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago