- Compile with typescript using
wool make ... - Bundle into an installable executable
pkgis the best option- However it critically does not support esm loaders
- Add
directandindirectgroupings 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
denoinstead 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 summaryfor info on installed packages - Suppress esm experimental warning (not any others)
- Fix
wool.lockto include direct and indirect deps from parent workspace - Rename
wool.locktowool-lock.jsonsince it is a json file - Fix
wool addto handle down registries - Add
wool add npm/exampleto install npm packages with caveats- Only in private packages
- Add a
wool-stats.jsonto store compilation info - When running
wool runcheck 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 runshould run the version that matches the local dep unless version specified - Add
tasksforwool task . buildfrom{ "tasks": { "build": "do thing" } }- With built-in nesting,
wool task . build.webfrom{ "tasks": { "build": { "web": "do web" } } }, andwool task . buildwould 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.0towool run lsjroberts/example -v 1.0.0 - Add
wool run lsjroberts/example -v 1.0andwool 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
--forceis 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
-devsuffix for the current version. - Local packages that depend on
1.0.0will use the-devversion - Local packages that have a constraint that does not match
1.0.0will not depend on this-devversion
- 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.jsonand auto clean unused packages- When a project is compiled, update the
usage.jsonwith 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)