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

xpiles

v0.3.0

Published

A cross-compiler for nodejs when disk space is at a premium

Downloads

11

Readme


▀████    ▐████▀    ▄███████▄  ▄█   ▄█          ▄████████    ▄████████ 
  ███▌   ████▀    ███    ███ ███  ███         ███    ███   ███    ███ 
   ███  ▐███      ███    ███ ███▌ ███         ███    █▀    ███    █▀  
   ▀███▄███▀      ███    ███ ███▌ ███        ▄███▄▄▄       ███        
   ████▀██▄     ▀█████████▀  ███▌ ███       ▀▀███▀▀▀     ▀███████████ 
  ▐███  ▀███      ███        ███  ███         ███    █▄           ███ 
 ▄███     ███▄    ███        ███  ███▌    ▄   ███    ███    ▄█    ███ 
████       ███▄  ▄████▀      █▀   █████▄▄██   ██████████  ▄████████▀  

What is this?

xpiles is a set of dev tools tuned for IoT devices / Docker Containers where there is a need for a tiny footprint. It allows you to take a very large ES2017 project, cross-compile to 4.X, reduce source code size, and gzip the contents to be uploaded to another form of computer.

Hot Reloading functionality also allows you to seemlessly develop and test on a remote machine!

Under the hood

Why is this useful?

Imagine you are trying to run a Nodejs server on the Onion Omega2 and only have 9mb of disk space. You've all ready installed ssh, nodejs, and only have 3.5mb left until there is no more storage..

With npm installed, you are down to 500kb left on disk. The depency of Nodejs AND npm just ins't realistic in this scenario.

Using xpiles you can get around this problem by eliminating the need for npm on the embedded device running node!

This build tool will package all dependencies into 1 single file, minimize it, then uglify it, so you don't waste a precious byte when storage is a premium!

An additional benefit, is a Hot Reloading dev server! You can make changes to source code, and have it automagically uploaded and ran on the remote machine!

Usage

Basic
npm install -g xpiles

xpiles compile --src=index.js --dest=build/bundle.js

From here you have a bundle.js file that can be executed. To upload and run the tiny build file:

xpiles run --host=192.168.3.1 --user=root --bundle=build/bundle.js
Hot Reloading
xpiles watch --src=index.js --dest=build/bundle.js --host=192.168.3.1 --user=root

Above will prompt you for a password, to use an Identity file:

xpiles watch --src=index.js --dest=build/bundle.js --host=192.168.3.1 --user=root -i ~/.ssh/id_rsa
Works in Progress
  • Switch over to google closure compiler, after this issue is resolved: https://github.com/google/closure-compiler-js/issues/88
    • Perhaps will just use node's clustering to envoke the command line.. but that doesn't fit wth rollup
  • Run tests on build and upload
  • man pages
  • Improved documentation
  • Docker exec support (rather than just ssh and scp)
  • More configurability with node versions, etc

We want to hear from you!!

Please, open an issue on GitHub for any thoughts, complaints or cudos!!