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

aegir

v45.0.8

Published

JavaScript project management

Downloads

21,128

Readme

aegir

ipfs.tech Discuss codecov CI

JavaScript project management

Aegir is an opinionated tool for TypeScript/JavaScript project management, testing and release. You should use it if you just want to ship working code and have few strongly held opinions on linting, project layout and testing frameworks.

It bundles config for standard tools such as eslint, mocha, etc and lets you concentrate on writing code instead of formatting whitespace.

Project Structure

The project structure when using this is quite strict, to ease replication and configuration overhead.

All source code should be placed under src, with the main entry point being src/index.js or src/index.ts.

All test files should be placed under test. Individual test files should end in .spec.js or .spec.ts and will be ran in all environments (node, browser, webworker, electron-main and electron-renderer).

To run node specific tests a file named test/node.js or test/node.ts should be used to require all node test files and the same thing for the other environments with a file named test/browser.js or test/browser.ts.

Your package.json should have the following entries and should pass aegir lint-package-json.

"main": "src/index.js",
"files": [
  "src",
  "dist"
],
"scripts": {
  "lint": "aegir lint",
  "release": "aegir release",
  "build": "aegir build",
  "test": "aegir test",
  "test:node": "aegir test --target node",
  "test:browser": "aegir test --target browser"
}

CLI

Run aegir --help

Usage: aegir <command> [options]

Commands:
  aegir completion                   generate completion script
  aegir build                        Builds a browser bundle and TS type declara
                                     tions from the `src` folder.
  aegir check-project                Ensure your project has the correct config.
  aegir check                        Check project
  aegir clean [files..]              Remove created build artifacts.
  aegir dependency-check [input...]  Run `dependency-check` cli with aegir defau
                                     lts.              [aliases: dep-check, dep]
  aegir docs                         Generate documentation from TS type declara
                                     tions.
  aegir document-check [input...]    Run `document-check` cli with aegir default
                                     s.                     [aliases: doc-check]
  aegir lint-package-json            Lint package.json with aegir defaults.
                                                    [aliases: lint-package, lpj]
  aegir lint                         Lint all project files
  aegir release                      Release using semantic-release
  aegir release-rc                   Release an RC version of the current module
                                      or monorepo
  aegir test-dependant [repo]        Run the tests of an module that depends on
                                     this module to see if the current changes h
                                     ave caused a regression
  aegir test                         Test your code in different environments
  aegir exec <command>               Run a command in each project of a monorepo
  aegir run <scripts..>              Run one or more npm scripts in each project
                                      of a monorepo

Global Options:
  -h, --help     Show help                                             [boolean]
  -v, --version  Show version number                                   [boolean]
  -d, --debug    Show debug output.                   [boolean] [default: false]

Examples:
  aegir build                               Runs the build command to bundle JS
                                            code for the browser.
  npx aegir build                           Can be used with `npx` to use a loca
                                            l version
  aegir test -t webworker -- --browser fir  If the command supports `--` can be
  efox                                      used to forward options to the under
                                            lying tool.
  npm test -- -- --browser firefox          If `npm test` translates to `aegir t
                                            est -t browser` and you want to forw
                                            ard options you need to use `-- --`
                                            instead.

Use `aegir <command> --help` to learn more about each command.

Configuration

Aegir can be fully configured using a config file named .aegir.js or the package.json using the property aegir.

.aegir.js

module.exports = {
  tsRepo: true,
  release: {
    build: false
  }
}

package.json

"main": "src/index.js",
"files": [
  "src",
  "dist"
],
"scripts": {
  "lint": "aegir lint",
  "release": "aegir release",
  "build": "aegir build",
  "test": "aegir test",
  "test:node": "aegir test --target node",
  "test:browser": "aegir test --target browser"
},
"aegir" : {
  "tsRepo": false
}

You can find the complete default config here and the types here.

Continuous Integration

Check this template for Github Actions https://github.com/ipfs/aegir/blob/main/md/github-actions.md

Testing helpers

In addition to running the tests aegir also provides several helpers to be used by the tests.

Check the documentation

Typescript

Aegir will detect the presence of tsconfig.json files and build typescript as appropriate.

Releases

aegir release will run semantic-release-style auto-releases with every change to main.

If you wish to batch changes up instead, please use release-please.

Config updates

You can keep your project configuration up to date by running:

$ npx aegir check-project

It will attempt to add/amend any configuration files that require updating to the latest versions.

If you have any custom config in your project please double check the edits it will make!

Install

$ npm i aegir

API Docs

License

Licensed under either of

Contribute

Contributions welcome! Please check out the issues.

Also see our contributing document for more information on how we work, and about contributing in general.

Please be aware that all interactions related to this repo are subject to the IPFS Code of Conduct.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.