You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/about/development.md
+64-1Lines changed: 64 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,4 +3,67 @@ title: Developer's Handbook
3
3
description: Learn about LavaMoat's project structure and internals.
4
4
---
5
5
6
-
Et irure quis sint officia ex est dolor minim fugiat nostrud. Deserunt consequat aute culpa irure esse nisi cupidatat quis ut. Ipsum ad fugiat occaecat laboris ex culpa commodo nisi do quis dolor Lorem cillum.
6
+
This document is aimed at developers of (and contributors to) LavaMoat. It contains information about LavaMoat's [project structure][], [internals][], [tools][] and [conventions][].
7
+
8
+
## Project Structure
9
+
10
+
LavaMoat is organized as a monorepo, and contains the following published packages:
|`@lavamoat/aa`| Provides functions to generate canonical package names which are consistent across package managers |
15
+
|`@lavamoat/allow-scripts`| An allow-list for on-install lifecycle scripts |
16
+
|`lavamoat-browserify`| Browserify plugin for LavaMoat |
17
+
|`lavamoat-core`| Core functionality; kernel and policy enforcement |
18
+
|`@lavamoat/lavapack`| A bundle packer for Browserify based on [`browser-pack`][browser-pack-ext]|
19
+
|`@lavamoat/laverna`| Tool to publish multiple workspaces in a monorepo |
20
+
|`lavamoat-node`| Node.js adapter for LavaMoat |
21
+
|`@lavamoat/preinstall-always-fail`| A package that fails if its `preinstall` lifecycle script is run |
22
+
|`lavamoat-tofu`| A tool to generate a LavaMoat policy from a dependency graph |
23
+
|`@lavamoat/webpack`| Webpack plugin for LavaMoat |
24
+
25
+
All directories are relative to `packages/`.
26
+
27
+
## Internals
28
+
29
+
> TODO: This section should probably just link to other documents as necessary. I don't think any such documents exist, though.
30
+
31
+
## Conventions
32
+
33
+
> TODO: I'd probably talk about how we try to create and ship types, automate away discussions about code style, etc. Anything PR-related should probably live in the contributor's guide.
34
+
35
+
## Tools
36
+
37
+
> This is a dynamic list and may never be complete.
38
+
39
+
LavaMoat uses the following developer tools:
40
+
41
+
-[ESLint][] and sundry plugins
42
+
-[TypeScript][] for type-checking and declaration generation; not used for compilation
43
+
-[AVA][] for testing
44
+
-[Prettier][] and plugins for code formatting
45
+
-[Husky][] and [lint-staged][] for pre-commit and commit message hooks
46
+
- GitHub Actions for continuous integration
47
+
-[Renovate][] for dependency management
48
+
-[CodeQL][] for static analysis
49
+
-[Socket][] for supply-chain security
50
+
-[commitlint][] for commit message conventions
51
+
-[Release Please][] and [Laverna][lavamoat-laverna] for versioning and publishing
0 commit comments