𐌷𐌴𐌽𐌲𐌹𐍃𐍄
Table of Contents generated with DocToc
𐌷𐌴𐌽𐌲𐌹𐍃𐍄
Multi-App Dev (M.A.D.)
Hengist Layout
- apps
- assets
- individual project folders (each with
src/
andlib/
, if you're so inclined and transpile stuff, or any other structure deemed suitable)
┌─────────────────────────────────────────────────────╖ │ my-hengist ║ │ ● package.json ║ │ ● README.md ║ │ ┌─────────────────────────────────────────────────────╖ │ │ .git ║ │ ┌─────────────────────────────────────────────────────╖ │ │ node_modules ║ │ ┌─────────────────────────────────────────────────────╖ │ │ apps ║ │ │ ▸ ../path/to/my-project ║ │ │ ▸ ../other-path/to/that-other-project ║ │ ┌─────────────────────────────────────────────────────╖ │ │ assets ║ │ │ ▸ ../path/to/some-data.file ║ │ │ ● image.png ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ my-project ║ │ │ │ ● huge-data.file ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ that-other-project ║ │ │ │ ● another-huge-data.file ║ │ ┌─────────────────────────────────────────────────────╖ │ │ my-project ║ │ │ ● package.json ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ node_modules ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ src ║ │ │ │ ● main.coffee ║ │ │ │ ● foobar.benchmark.coffee ║ │ │ │ ● silly.benchmark.coffee ║ │ │ │ ● arithmetic.test.coffee ║ │ │ │ ● silly.test.coffee ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ lib ║ │ │ │ ● main.js ║ │ │ │ ● main.js.map ║ │ ┌─────────────────────────────────────────────────────╖ │ │ that-other-project ║ │ │ ● package.json ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ node_modules ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ src ║ │ │ │ ● main.coffee ║ │ │ ┌─────────────────────────────────────────────────────╖ │ │ │ lib ║ │ │ │ ● main.js ║ │ │ │ ● main.js.map ║
Thoughts & Plans
-
We continue to keep
- benchmarks,
- demos and
- tests
for the projects under
hengist/dev/$project_name
. This makeshengist
a monorepo for the dev code of the projects, but not for their production code. Dependencies for stuff underdev
will be kept inhengist/node_modules
and be declared inhengist/package.json
. -
To help subject-oriented development,
apps-$subject
folders such asapps-dbay
andapps-typesetting
are introduced. These contain symlinks to the projects that are relevent for the$subject
(e.g.typesetting
) at hand; they may also contain further material such asREADME
s.
To Do
-
[–] Update tree representation: local development under
dev/
(which is included in Hengist git repo); external stuff (for which Hengist only provides tests and/or benchmarks and/or demos, experiments) is symlinked underapps/
(and not included in Hengist git repo). -
[+] Implement a
prepare-commit-msg
git hook that prepends each commit with the names of the sub-projects affected. This works by retrieving the relative paths of all staged files withgit diff --cached --name-only
and then looking for the nearestpackage.json
file for each part.