Skip to content

A bit like Make but for directories

License

Notifications You must be signed in to change notification settings

plumdog/dirbuild

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dirbuild

A bit like Make but for directories

The idea

Make works really well with file in, file out processes, but breaks down when you have directory in, directory out processes. This aim to handle that.

The dirbuild config file defines some targets (a lot like with make), where each target has:

  • a command
  • some glob patterns to capture which files affect the outcome of that command
  • the path to the directory that command creates

Then, when running a target with dirbuild [mytarget] (target is optional, defaults to the first target in the config file), that target is found in the config file, the dependencies are resolved and each file is hashed. The output directory is checked for a manifest file, if it exists with the same hashes for each file, then nothing to do. Otherwise, runs the command, then writes the manifest file.

The config file

Named .dirbuild.yml.

targets:
  mytarget:
    command: npm run build
    depends:
      - '*.txt'  # every .txt file in the current directory
      - '**/*.js'  # every .js file in any subdirectory
      - package.json
    dependsExclude:
      - node_modules/**  # ignore everything in node_modules
    output: build/

The manifest file

Generated by dirbuild, and stored in the output directory once the command completes at [outputDirectory]/.dirbuildManifest.yml.