load-options

0.4.0 • Public • Published

load-options NPM version

Load Assemble options from a config file, object, glob patterns, or any combination of those. Fallback on defaults if options aren't defined, or you can override or extend the defaults.

Install

Install with npm:

npm i load-options --save-dev

Usage

Load default options, define an object, pass JSON/YAML file(s) or glob pattern(s) to extend the defaults.

Example:

Use the defaults:

var assemble = require('assemble');
var opts = require('load-options');
 
// Override `default` layout with `blog` layout
assemble.options(opts({layout: 'blog'}));
assemble.task('site', function() {
  assemble.src(opts.src)
    .pipe(assemble.dest(opts.dest));
});
  • options {Object}
  • return {Object}

Examples

Add options

Define new options by passing an object:

var options = require('load-options')({foo: 'bar'});

Reset options

If there is an option defined that you want to reset or "turn off", just pass an empty value:

var options = require('load-options')({plugins: []});

Override the default value with a new value:

var options = require('load-options')({plugins: ['foo/bar/*.js']});

Extend options

Extend the defaults by using lodash templates (e.g. keep the defaults AND add your own). Just reference a property on the _default object that corresponds to the option want to extend:

var loadOpts = require('load-options');
var options = loadOpts({
  plugins: ['<%= _default.plugins %>', 'foo/bar/*.js']
});

.assemblerc.yml

Extend the default options with user-defined options in .assemblerc.yml:

var options = require('load-options')('.assemblerc.yml');

Example output

// paths shortened using ~ to make the example more readable
{ dest: '_gh_pages',
  assets: '_gh_pages/assets',
  flatten: true,
  engine: 'handlebars',
  ext: '.html',
  data: {},
  plasma: {},
  layoutdir: 'test/fixtures/templates/layouts',
  layout: 'foo',
  layoutext: '.hbs',
  pages:
   [ '~/test/fixtures/templates/pages/about.hbs',
     '~/test/fixtures/templates/pages/index.hbs' ],
  partials:
   [ '~/test/fixtures/templates/partials/alert.hbs',
     '~/test/fixtures/templates/partials/nav.hbs',
     '~/test/fixtures/templates/partials/tooltip.hbs' ],
  plugins: [],
  middleware:
   [ '~/test/fixtures/extensions/middleware/a.js',
     '~/test/fixtures/extensions/middleware/b.js',
     '~/test/fixtures/extensions/middleware/c.js' ],
  helpers:
   [ '~/test/fixtures/extensions/helpers/a.js',
     '~/test/fixtures/extensions/helpers/b.js',
     '~/test/fixtures/extensions/helpers/c.js' ],
  mixins:
   [ '~/test/fixtures/extensions/mixins/a.js',
     '~/test/fixtures/extensions/mixins/b.js',
     '~/test/fixtures/extensions/mixins/c.js' ],
  extensions: 'test/fixtures/extensions',
  templates: 'test/fixtures/templates',
  filters:
   [ '~/test/fixtures/extensions/filters/a.js',
     '~/test/fixtures/extensions/filters/b.js',
     '~/test/fixtures/extensions/filters/c.js' ],
  _default:
   { dest: '_gh_pages',
     assets: '_gh_pages/assets',
     flatten: true,
     engine: 'handlebars',
     ext: '.html',
     data: [ 'data/*.{json,yml}' ],
     plasma: null,
     layoutdir: 'test/fixtures/templates/layouts',
     layout: 'default',
     layoutext: '.hbs',
     pages: [ 'test/fixtures/templates/pages/*.hbs' ],
     partials: [ 'test/fixtures/templates/{partials,includes}/*.hbs' ],
     plugins: [ 'test/fixtures/extensions/plugins/*.js' ],
     middleware: [ 'test/fixtures/extensions/middleware/*.js' ],
     helpers: [ 'test/fixtures/extensions/helpers/*.js' ],
     mixins: [ 'test/fixtures/extensions/mixins/*.js' ] } }

Author

Jon Schlinkert

License

Copyright (c) 2014 Jon Schlinkert, contributors.
Released under the MIT license


This file was generated by verb-cli on July 19, 2014.

Package Sidebar

Install

npm i load-options

Weekly Downloads

8

Version

0.4.0

License

none

Last publish

Collaborators

  • doowb
  • jonschlinkert