-
Notifications
You must be signed in to change notification settings - Fork 2
Testing and contribution checklist for v0.1 #15
Description
Hey everyone 👋
If you're excited about espresso like we are, we'd appreciate it if you'd help us test the current implementation by running through this checklist. If you encounter any issues, please report a bug, or ping us on Discord!
Furthermore, if there are other checks not listed here, feel free to add them, test them, and reply to this issue!
Blockers
A few features that currently do not work, so please avoid testing them:
-
TypeScript React/JSX support. Since we don't have
node_modulescurrently, thereactand@types/reactpackages are not resolvable, andReactstatements do not work.However, this can be temporarily bypassed by using
"jsx": "preserve"and manually definingJSX.IntrinsicElements. This is a lot of work though.namespace JSX { export interface IntrinsicElements { div: {}; // ... } }
Or you could use npm temporarily to create the
node_modulesfolder for@typesusage.
Installing espm
- Ran the installer script from the latest GitHub release
- Created the
~/.espressodirectory in my home directory - Added the
espmbinary to.espresso/binand toPATH - Can execute the
espmbinary
espm init command
- Command runs
- Can skip prompts with
--yes - Can customize output destination with
--to - Can create a single package workspace / polyrepo
- Refer to
espm newfor additional checks
- Refer to
- Can create multiple package workspace / monorepo
- Errors if destination is already a package or workspace
- Can customize globs via prompts
- Creates a
[workspace]basedesp.tomlwith populated values - Creates
espm.lock(temporary)
espm new command
- Command runs
- Errors if destination is already a package
- Can customize output destination with
--to - Can customize name with
--name - Can customize description with
--description - Can customize keywords with
--keyword - Can skip prompts with
--yes - Creates a
[package]basedesp.tomlwith populated values - Creates
src/index.tsandREADME.md
espm build command
- Command runs
- JavaScript
- Transforms all JS/TS files, mirroring source structure
- Writes files to the
.espm/<target>output directory - Writes files with an
.mjsextension - Rewrites
importandexportstatements within files to have a trailing.mjsextension - Compiles for each target using
--target-
es2015 -
es2016 -
es2017 -
es2018 -
es2019 -
es2020 -
es2021 -
es2022
-
- Can enable legacy decorators with
build.decorators = "legacy" - CommonJS
- Errors for CJS syntax (
require,__dirname, etc) - Errors for
.cjsand.ctsfiles
- Errors for CJS syntax (
- TypeScript
- Automatically generates declaration files if a TS file was detected in
src - Creates a
.espm/tsconfig.<target>.jsonfile - Can customize compiler options and tsconfig with a
tsconfig.espm.jsonfile- Re-maps all path related compiler options correctly
- Renames all
.d.tsto.d.mtsin the output directory - Generates for each target using
tsc-
es2015 -
es2016 -
es2017 -
es2018 -
es2019 -
es2020 -
es2021 -
es2022
-
- Downloads the latest
tscversion to~/.espresso/packages - Supports project references and
--build - Can enable legacy decorators with
build.decorators = "legacy"
- Automatically generates declaration files if a TS file was detected in
- Assets
- Copies assets to
.espm/<target>output directory, mirroring source structure - Supports all asset types: images, audio, video, icons, etc
- Can exclude assets from being copied with
build.excludesetting - Optimizes
.pngfiles- Can disable optimization with
build.optimize-png = false - Can customize optimization level with
build.optimize-png = <level>
- Can disable optimization with
- Copies assets to
- Other
- Copies readmes, changelogs, and license to output directory