Files
Vanillae/utils/jex/priv/MANUAL.txt
T
2022-11-27 20:32:22 -07:00

61 lines
2.5 KiB
Plaintext

INTRODUCTION
Jex is a simple packaging/dependency system for TypeScript/JavaScript
projects.
As of now, Jex is a glorified shell script that automates a lot of the
tedium in building sidekick, JR, etc. Jex is very much a work in progress,
so these instructions are subject to change.
Jex is currently hyper-specialized to our use cases inside of Vanillae, and
is probably (currently) unsuitable for your use case. For instance, Jex
assumes you are running a UNIX-like system with standard UNIX programs
installed (e.g. tree, rsync, tar, etc). It also makes very strong
assumptions about your project structure and how you want to distribute
your project.
Our long-term goal is to build Jex out into a proper secure packaging
system, and completely remove any dependency on NPM. NPM comes with a lot
of unfixable security issues that present an unacceptable risk in a
business context. Developing software for the business context is the
focus of the Vanillae project.
jex.eterms CONFIG FILE
Every project requires a file called `jex.eterms` in the root of the
project.
The config file is a list of Erlang terms separated by `.`s
The following keys must exist, the rest are ignored
{type, library | external | extension}.
This key implies other settings in the build process
library ->
The standard option. Pulls in dependencies and builds them,
assuming normal project layout. This is what you want in most
cases, even for things that are not libraries.
external ->
This is for external pre-built packages that we didn't develop,
such as TweetNaCl. This does not run `tsc`, etc. Jex assumes
the project has already been built, and so "install" etc just
copies stuff.
extension ->
Used for Jack Russell. Extensions have a much more complicated
build process because there are three different execution
contexts with three different constraint sets.
{realm, atom()}.
{name, atom()}.
{version, string()}.
{deps, [string()]}.
PROJECT STRUCTURE
Jex makes very strong assumptions about your project structure
README.md used by documentation tool `typedoc`
jex.eterms explained above
tsconfig.json needed for tsc
src/ typescript source code