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

pavios

v0.0.1

Published

An experimental, pluggable build system, built on top of Gulp.

Downloads

5

Readme

Pavios

An experimental, pluggable build system, built on top of Gulp.

Installation

npm install --save-dev pavios

Pavios is based around the concept of tasks, which are modules that are installed along with pavios and define gulp tasks.

For Task Users

Simply install a pavios module from npm and add its configuration to a .paviosrc file in the root of your project or in any directory above your project's node_modules folder. See the documentation for the rc module used in Pavios for more information.

Config Guide

  • Standard config format:
[{
  "src": "src/index.js",
  "dest": "build/"
}, {
  "src": "src/Component.jsx",
  "dest": "build/",
  "opts": {
    "minify": true,
    "sourcemaps": false
  }
}, {
  "src": "src/lib.js",
  "dest": "build/",
  "opts": {
    "renameTo": "vendor.js",
    "compilerOpts": {
      "stage": 1
    }
  }
}]

Example

{
  "tasks": {
    "babel": [
      {
        "src": "src/index.js",
        "dest": "build/",
        "opts": {
          "minify": true,
          "sourcemaps": false
        }
      }
    ]
  }
}

For Task Creators

Pavios provides a pavios.API object for use in the creation of tasks.

var pavios = require('pavios');
var gulp = pavios.gulp;
var API = pavios.API;
var getConfig = API.getConfig;
var gulpModule = require('gulp-module');
var config = getConfig('task');

gulp.task('task', function() {
  return gulp.src(config.src)
    .pipe(gulpModule())
    .pipe(gulp.dest(config.dest));
});

In ES6/ES2015:

let {gulp, API: {getConfig}} = require('pavios');
let gulpModule = require('gulp-module');

let config = getConfig('task');

gulp.task('task', () => {
  return gulp.src(config.src)
    .pipe(gulpModule())
    .pipe(gulp.dest(config.dest));
});

In CoffeeScript:

{gulp, API: {getConfig}} = require 'pavios'
gulpModule = require 'gulp-module'

config = getConfig 'task'

gulp.task 'task', ->
  gulp.src config.src
  .pipe gulpModule()
  .pipe gulp.dest config.dest

Config Guide

Default Config

TODO

  • Need something more robust than module.exports.order (it's brittle and requires knowledge of pretty much every Pavios task and what it does)

    • Maybe some sort of "beforeFileOperations", "duringFileOperations", "afterFileOperations", "afterStartingServer" thing?
  • Error handling in pavios-jade (errors from gulp-jade aren't caught)

  • Eslint parsers/plugins have to be installed at the pavios-* level instead of the top level. This needs to be fixed because installing something like babel-eslint in node_modules is unsustainable.

  • Coffeelint doesn't detect coffeelint.json for some reason (This is probably not an issue with where the module is, because pavios-eslint detects .eslintrc correctly, and doesn't work with babel-eslint for it)

  • Should the Gulp API be implemented by the Pavios object?

    • But maybe we want to cleanly separate Gulp functionality and Pavios addons.

      • We might lose the connection to Gulp.
        • Maybe we want to.
    • Doesn't Pavios provide the addons and Gulp the base functionality?

pavios = require 'pavios'
{API: {getConfig, $, typeCheck}} = pavios

config = getConfig 'babel'

typeCheck.standard config

pavios.createTask 'babel', ->
  pavios.src 'abc'
  .pipe $.if(prod, $.sourcemaps.init())
  .pipe pavios.dest 'def'