61 lines
2.5 KiB
Plaintext
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
|