whet
TypeScript icon, indicating that this package has built-in type declarations

0.0.31 • Public • Published

Whet

A NodeJS-based tool for managing things every project needs, such as configuration, build scripts, assets, etc., using a flexible everything-is-an-asset approach, with configurable caching.

Project Files

Project files define a project, its stones. Their content defines what commands are available.

Stones

Stones (named after whetstone) are individual building blocks of a project.

They represent a single logical asset (can be multiple files) or functionality (e.g. a dev web server). Stones can use other stones (via routes), to achieve their objective, forming a dependency tree. E.g. a CSS file could be made by minifying a file generated from SCSS source, and each step could be individually cached.

Stones Configuration

Stones try to keep all their state in a config object. Each stone requires it to be supplied. The config object should be designed for scripting, i.e. allow dynamic types as long as they make sense.

Reading and applying the configuration should be limited to generating resources/hashes from the stone. Invalid configuration therefore won't crash the project initialization until it's being used. This is just a guideline and not a requirement, and stones might validate the configuration immediately where it makes sense.

Some stones might provide helper methods to modify the configuration after it was passed in. Such methods might modify the config object, e.g. turning a single entry into array of them.

Hashes

...

Commands

...

Routers

...

Core Concepts

Project files should have no side effects, unless some of their commands are executed. They only process the active configuration, initializing the available commands.

All file paths should use / as directory separator, regardless of platform.

Paths should always be relative, and are considered relative to root project directory, or relative to root of the Router/Stone used. For getting sources from Stones/Routers minimatch is used.

Path that is a directory ends with a /, otherwise it's considered a file. That means:

  • assets/ is a directory called assets.
  • assets is a file called assets.

Readme

Keywords

none

Package Sidebar

Install

npm i whet

Weekly Downloads

7

Version

0.0.31

License

MIT

Unpacked Size

318 kB

Total Files

174

Last publish

Collaborators

  • antriel