- Compile with typescript using
wool make ...
- Bundle into an installable executable
pkg
is the best option- However it critically does not support esm loaders
- Add
direct
andindirect
groupings to dependencies - Automatically fix order of workspaces so they build in the correct order, based on the dependency graph
- Embed a specific node version into
wool
- This will prevent issues around incompatible node versions
- It will make community upgrades easier as it will only be tied to the wool version, not the node version outside of our control
- Spike using
deno
instead of node- It is very early days so no need to do this yet
- Change exec of *nix specific tools to a compatibility layer to make it work on windows as well
- Reduce node api surface
- May be controversial, but would help if there is a switch to deno perhaps
- e.g.
import { path } from 'wool/node';
- or
import { path } from 'wool';
- or
import { path } from 'node/path';
- Catch all errors and map through sourcemaps to ts code
- Add
wool summary
for info on installed packages - Suppress esm experimental warning (not any others)
- Fix
wool.lock
to include direct and indirect deps from parent workspace - Rename
wool.lock
towool-lock.json
since it is a json file - Fix
wool add
to handle down registries - Add
wool add npm/example
to install npm packages with caveats- Only in private packages
- Add a
wool-stats.json
to store compilation info - When running
wool run
check for missing dependencies, run awool make .
if required and awool add ...
for the remaining non-local deps - When running
wool make .
check for missing dependencies and if required run awool add ...
- Change global add to
wool install wool/cli
- And
wool install wool/cli -v 0.2.0
- And
- Add generic run configs,
wool run -c example.json lsjroberts/example
-
wool run
should run the version that matches the local dep unless version specified - Add
tasks
forwool task . build
from{ "tasks": { "build": "do thing" } }
- With built-in nesting,
wool task . build.web
from{ "tasks": { "build": { "web": "do web" } } }
, andwool task . build
would run all nested tasks. - Shortcut cwd with
wool task build
- With built-in nesting,
- Add generic run watch,
wool run -w lsjroberts/example
, it watches files in local workspace - Add make watch
wool make . -w
- Change
wool run lsjroberts/example/1.0.0
towool run lsjroberts/example -v 1.0.0
- Add
wool run lsjroberts/example -v 1.0
andwool run lsjroberts/example -v 1
- Always run the latest version of a package acceptable to the given constraint
- If none specified, run the version that matches the local dep if there is one
- If the user attempts to run a version that would not be picked by the local dep, warn and await confirmation, unless
--force
is given
- Fail fast on make, stop compilation after the first error
- e.g. "make failed on wool/cli with 12 errors, the first was: ... to see all run again with
--verbose
"
- e.g. "make failed on wool/cli with 12 errors, the first was: ... to see all run again with
- Fix dependency tree order
- It errored on a weird situation when utils failed after cli, but may have caused cli to not see utils anymore
- When making local packages they should install into
~/.wool/packages/lsjroberts/example/1.0.0-dev
- A package's version will be determined by its interface, therefore you have to write the code before you can version. However, this means it will compile into and overwrite the existing actual version you have downloaded / made. To prevent this it installs into the
-dev
suffix for the current version. - Local packages that depend on
1.0.0
will use the-dev
version - Local packages that have a constraint that does not match
1.0.0
will not depend on this-dev
version
- A package's version will be determined by its interface, therefore you have to write the code before you can version. However, this means it will compile into and overwrite the existing actual version you have downloaded / made. To prevent this it installs into the
- Record package usage in
~/.wool/usage.json
and auto clean unused packages- When a project is compiled, update the
usage.json
with which packages and versions it depends on - If the compilation causes a package to have zero projects using it, delete that package/version
- When a project is compiled, update the
- Restructure into:
wool/core Array Dict List Maybe Process Set String Tuple wool/cli wool/fs wool/package wool/request wool/semver wool/terminal wool/test
- Extract cli commands into programattic actions which the cli calls and provides a terminal interface to
- Fix intermittent make failures. It fails on types but running again it passes.
- Add test failure reporter for object diffs
- Fix constant rebuild of private packages (not checking for dirty correctly)