beabee-common
is a shared codebase utilized across Beabee projects, compatible
with Node.js, Deno, and web browsers.
To install beabee-common
, use the following command:
npm install @beabee/beabee-common --save
In a Node.js environment, use beabee-common
as follows:
import { parseDate } from "@beabee/beabee-common";
parseDate("2022"); // Returns: [ 2021-12-31T23:00:00.000Z, 'y' ]
Support for Deno is planned. Details on publishing to deno.land will be provided in the future.
Development of beabee-common
requires the latest stable versions of both Deno
and Node.js:
- Deno (latest stable version)
- Node.js (latest stable version)
To build the project, run:
npm install
npm run build # Alternatively, use `deno task build`
Scripts for NPM and Deno tasks are synchronized, ensuring consistency whether
you use npm run ...
or deno task ...
. They are defined in both
package.json
and deno.json
. New scripts can be synchronized with via
deno task sync
or npm run sync
.
Key scripts include:
Node.js builds are created using esbuild from Deno
source. Deno projects can directly utilize TypeScript source from ./mod.ts
.
This runs several sub-scripts:
build:types
- Generates TypeScript types using thetsc
compiler.build:node
:build:node:cjs
- Creates a CommonJS bundle withesbuild
, script located at./scripts/esbuild.cjs.ts
.build:node:esm
- Generates an ESM bundle usingesbuild
, script found at./scripts/esbuild.esm.ts
.
Deno's support for NPM packages differs in syntax, e.g., date-fns
is imported
as import { format } from "npm:date-fns";
in Deno, and
import { format } from "date-fns";
in Node.js. Aliases in deno.json
enable
consistent codebase usage across environments.
Synchronizes dependencies and scripts across package.json
and deno.json
to
establishing necessary aliases in Deno and to make the scripts callable from
both. See ./scripts/sync.ts
for details.
Generates index.ts
files. Located at ./scripts/generate-index.ts
.
Formats code using Deno's standard formatter.
Lints code using Deno's standard linter.
Testing is divided into several scripts:
test:types
- Checks for type errors usingtsc
.test:deno
- Main tests using Deno's standard testing framework.test:node
:test:node:esm
- Tests ESM build importability in Node.js.test:node:cjs
- Tests CJS build importability in Node.js.
You can use dependencies for both NPM and Deno. When incorporating Deno
packages, they must be bundled for Node.js compatibility. For a practical
example, refer to
this pull request.
For integrating NPM dependencies, consult the sync
script which ensures
synchronization between the dependency configurations for both environments.
This module is cross platform independent and can be used under Node.js, Deno and in the browser. Therefore, please do not use any runtime APIs from Node.js, Deno or the Web API unless it is available in all these runtimes.
beabee-common
is licensed under the AGPL-3.0 license.