1.0.1 • Published 9 years ago

static-base v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

Static Base

A small functional toolset for building static websites.
Check out static-base-contrib for some pre-build functions.

A simple example

import { run } from 'static-base';

run(
  /* get content from files */
  (files) => {
    return files.map(f => { ...f, content: readFile(f.entirePath) });
  },

  /* render markdown */
  (files) => {
    return files.map(f => { ...f, content: markdown(f.content) });
  }

  /* write to disk */
  (files) => {
    return [...files].forEach(file => {
      writeFile(path.join(file.root, 'build', file.path), file.content);
    });
  }

)(
  '**/*.markdown',
  process.cwd()

).then(() => {
  console.log('Build was successful!')

}).catch((err) => {
  console.error('Build error!');
  console.error(err);

});

Documentation

http://icidasset.github.io/static-base

A detailed example and explanation

Note: This example uses functions from static-base-contrib, but the explanation should be easy enough to understand without any knowledge of the contrib library.

/**
 * Make a dictionary.
 *
 * Which is essentially a collection of objects that contain
 * the path to each file that matches the given glob pattern.
 */
const articles = run(
  [read],                         /* puts the content of each file in the 'content' property */
  [frontmatter],                  /* extracts the frontmatter from 'content' and parses it */
  [markdown, markdownRenderer],   /* parses 'content' as markdown */
  [renameExtension, '.html'],     /* change the '.md' extension to '.html' */
)(
  'articles/**/*.md',   /* glob pattern that selects all articles */
  process.cwd()         /* path to the root directory of this project */
);


/**
 * Build collections and store them in the metadata,
 * so that each file has a reference to the other files.
 * Then render their layout and write them to disk.
 */
Promise.all([
  articles
]).then(dictionaries => {
  const [articles] = dictionaries;

  run(
    [ metadata, { collections } ],  /* store dictionaries in every file definition */
    [ template, renderHandlebars ], /* e.g. render article layout */
    [ write, 'build/articles' ]     /* writes all files to disk */
                                    /* -> /process_cwd_path/build/articles/path_from_file */
  )(
    [
      ...articles,
    ]
  );
});

Development

npm install
npm test        # run tests
npm compile     # compile es6 src code
npm run docs    # generate documentation
1.0.1

9 years ago

1.0.0

9 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.0

9 years ago

0.2.0

9 years ago

0.1.0

9 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago