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

akiro

v0.0.12

Published

Magically compile NPM packages with native extensions for AWS Lambda.

Downloads

51

Readme

Akiro.js npm version license type ECMAScript 2015 Source npm downloads node 5.x.x node 4.x.x node 3.x.x iojs 2.x.x iojs 1.x.x node 0.12.x node 0.11.x node 0.10.x Build Status Dependency Status Dev Dependency Status Coverage Status Code Climate bitHound Score

When you get started with AWS Lambda functions, you may need to use an npm package that contains native extensions (such as C or C++). If you try to compile these packages on your development computer, then deploy that code to AWS Lambda, it will fail because the code wasn't compiled for the environment it was deployed to.

  • Akiro solves this problem by deploying a single AkiroBuilder function to your AWS Lambda account which compiles npm packages for you indirectly on the architecture that the code is going to run on.
  • Packages are built in parallel using multiple invokes of the same AkiroBuilder Lambda to minimize build time and prevent AWS Lambda Function Timeout (max 300 seconds).
  • After the packages are built, they are automatically saved to an S3 bucket of your designation, then optionally downloaded and unzipped to a local directory.
  • Built-in support for local caching so that any specific version of any package is only built once and then re-used to optimize deployment times. This greatly optimizes deployment speeds!
import Akiro from "akiro";
const akiro = new Akiro({
	region: "us-east-1",
	bucket: "fam-akiro",
	debug: 1
});

const packages = {
	"flowsync": "^0.1.12",
	"almaden": "^0.3.1",
	"dovima": "^0.3.2",
	"incognito": "^0.1.4"
};

const outputDirectory = `${process.cwd()}/node_modules_aws/`;

akiro.package(packages, outputDirectory, (packageError) => {
	if (packageError) { throw packageError; }
	console.log("Voila!", `ls -lah ${outputDirectory}`);
});

Getting Started

Akiro requires minimal initial configuration before its automation can take over. Please read through this entire guide before attempting to use Akiro. It may save you much grief!

Installation

The easiest way to install Akiro is through the node package manager:

npm install akiro --save-dev

Configuration

There are two mandatory ways you must configure Akiro:

  1. Setup your own AWS Credentials so that you can deploy an AWS Lambda Function to your account.
  2. Setup an AWS IAm Role for the AkiroBuilder Lambda Function to save objects to AWS S3.
    • This is required because AWS Lambdas don't have a way to send back the compiled packages on their own.
    • Instead, Akiro saves the compiled packages to an AWS S3 Bucket of your choice so that Akiro can download them back to your computer.
  3. Initialize Akiro to the AWS Regions you will use it on.

1. Setup Your Own ~/.aws/credentials

  • Akiro expects there to be an ~/.aws/credentials file.
  • For more information on how to set up this file, read this guide.
  • In the future, we will add support for specifying credentials manually in other ways.
    • Please submit an issue if you urgently require a different method.

2. Setup an AWS IAm Role For AkiroBuilder

Due to the size of this section, we've decided to put it onto its own page. Behold, it has pictures!

3. Initialize Akiro

  • Initializing deploys an AWS Lambda called AkiroBuilder to an AWS Region of your choice.
  • The AkiroBuilder Lambda Function is fundamental for the functionality of Akiro.
  • Akiro only needs to be initialized once per AWS Region that your organization will deploy AWS Lambdas to:
  • This process will be simplified in later BETA releases.
import Akiro from "akiro";
const akiro = new Akiro({
	region: "us-east-1",
	debug: 1
});

const iamRoleName = "AWSLambda";

akiro.initialize(iamRoleName, error => {
	if (error) { throw error; }
	console.log("Akiro deployed.");
});

Building Packages

After Akiro is configured and initialized the akiro.package() method becomes available for everybody in the orignanization to build packages on the AkiroBuilder.

akiro.package(packageList, outputDirectory, callback)

import Akiro from "akiro";
const akiro = new Akiro({
	region: "us-east-1", // Defaults to "us-east-1"
	bucket: "my-akiro-bucket", // Required
	debug: 1 // Comment out to run silent
});

const packages = {
	"flowsync": "^0.1.12",
	"almaden": "^0.3.1",
	"dovima": "^0.3.2",
	"incognito": "^0.1.4"
};

const outputDirectory = `${process.cwd()}/node_modules_aws/`;

akiro.package(packages, outputDirectory, (packageError) => {
	if (packageError) { throw packageError; }
	console.log("Voila!", `ls -lah ${outputDirectory}`);
});