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

objectus

v1.1.1

Published

Node module that compiles an infinite tree of JSON and YML files into one object

Downloads

16

Readme

objectus

Compile a recursive directory tree of JSON and YML files into an object

npm version tests Dependency Status Licence

NPM

var objectus = require('objectus');

objectus('dat/', function(error, result) {
  if (error) { console.log(error); }
  console.log(result);
});

Why?

  • Unify data that is needed in multiple preprocessors like meta tags, colors, fonts, etc.
  • Allow the possibility of others to contribute who are not familiar with the technology in use
    • Give copywriters access to their copy seamlessly
    • Give designers access to font and color values seamlessly

Installation

$ npm install objectus

Basic Usage

Say you have all your config & copy in the folder dat/ and your meta tags in dat/meta.yml looking like

---
url: http://www.example.url/
tags:
  title: website title
  description: "website description"

If you ran

objectus('dat/', function(error, result) {
  console.log(result);
});

You would see

meta: {
  url: "http://www.example.url/",
  tags: {
    title: "website title",
    description: "website description"
  }
}

Now throw in some colors you need accessed in HTML and CSS in dat/guide/ called colors.yml and

---
blue1: "#0000FF"
red1: "#FF0000"

..will stack and then result in

meta: {
  url: "http://www.example.url/",
  tags: {
    title: "website title",
    description: "website description"
  }
},
guide: {
  colors: {
    blue1: "#0000FF",
    red1: "#FF0000"
  }
}

Note: Folders become keys and values are the objectus'ed files, so specifying a key in a folder the same name of a directory in the same will result in one overwriting the other

Gulp Integration

Start with grabbing our data, then a task to do the same


var objectus = reuqire('objectus');

objectus('dat/', function(error, result) { data = result; });

gulp.task('objectus', function() {
  objectus('dat/', function(error, result) {
    data = result;
  });
  return true;
});

Now lets pass our data into a CSS preprocessor, say Stylus

gulp.task('stylus', function() {
  gulp.src('sty/main.styl')
    .pipe(stylus({ rawDefine: { data: data } })
    .pipe(gulp.dest('pub/css'))
});

How about an HTML template engine like Jade / the new name Pug

gulp.task('jade', function() {
  gulp.src('tpl/**/index.jade')
    .pipe(jade({pretty: true, locals: {data: data}}))
    .pipe(gulp.dest('pub'))
});

Make sure when you are watching files that are compiled passing objectus, you re-compile them afterwards

  gulp.watch('dat/**/*', ['objectus','stylus','jade']);

Now lets get fancy, here is a more detailed example involving browserSync, gulp-notify, and gulp-sourcemaps


var gulp = require('gulp');
var sync = require('browser-sync').create();
var notify = require('gulp-notify');
var stylus = require('gulp-stylus');
var jade = require('gulp-jade');
var sourcemaps = require('gulp-sourcemaps');

var objectus = require('objectus');

objectus('dat/', function(error, result) {
  if (error) {
    notify(error);
  }
  data = result;
});

gulp.task('objectus', function() {
  objectus('dat/', function(error, result) {
    if (error) {
      notify(error);
    }
    data = result;
  });
  return true;
});

gulp.task('stylus', function() {
  gulp.src('sty/main.styl')
    .pipe(sourcemaps.init())
    .pipe(stylus({ rawDefine: { data: data } })
    .on('error', notify.onError(function(error) {
      return {title: "Stylus error: " + error.name, message: error.message, sound: 'Pop' };
    })))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('pub/css'))
    .pipe(sync.stream());
});


gulp.task('jade', function() {
  gulp.src('tpl/**/index.jade')
    .pipe(jade({pretty: true, locals: {data: data}})
      .on('error', notify.onError(function(error) {
        return {title: "Jade error: " + error.name, message: error.message, sound: 'Pop' };
      }))
      .on('error', function(error) {
        console.log(error);
      })
    )
    .pipe(gulp.dest('pub'))
    .pipe(sync.stream());
});

gulp.task('sync', function() {
  sync.init({
    server: {
      baseDir: 'pub/',
    }
  });

  gulp.watch('dat/**/*', ['objectus','stylus','jade']);
  gulp.watch('sty/**/*.styl', ['stylus']);
  gulp.watch('tpl/**/*.jade', ['jade']);

});

gulp.task('default', ['objectus','stylus', 'jade']);

Why call it objectus

The origin of the word object

Middle English, from Medieval Latin objectum, from Latin, neuter of objectus, past participle of obicere to throw in the way, present, hinder, from ob- in the way + jacere to throw