Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(lazer): fix package build #2144

Merged
merged 1 commit into from
Nov 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions .github/workflows/ci-lazer-sdk-js.yml

This file was deleted.

46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,52 @@ after `--`, for instance you could run `pnpm test -- --concurrency 2`.
- `pnpm start:prod`: Run production builds and start production mode servers in
parallel.

#### Building a new package

New packages should be configured with a few requirements in mind:

1. You need to make sure `package.json` scripts are named such that that
turborepo will hook into them at the expected times.

- See [turbo.json](./turbo.json) to see the base configuration and ensure you
use script names that match the tasks that turborepo is configured to run.
- You don't need to define scripts for all the tasks that are in the root
`turbo.json` config, just define the ones that make sense for your project.
- You shouldn't define scripts for tasks that just trigger other tasks;
instead configure turborepo dependencies to trigger the tasks. This will
allow turborepo to cache and parallelize things more effectively.
- In general, `build`, `fix`, and `test` are the main turborepo task graph
entry points, and any sub-tasks that apply to your package should be
configured as dependencies somewhere in the graph rooted at one of those.
- If you need sub-tasks or a task configuration that only apply to your or a
small few packages, add a package-scoped `turbo.json`, see [the one in the
insights app](./apps/insights/turbo.json) as an example.

2. Make sure to configure the tools you need and hook up the relevant checks to
turborepo via the `test` root task so they run on CI. The most common tools
(eslint, prettier, jest, and typescript) are trivial to configure correctly
using shared configs, see the relevant config files [in the insights
app](./apps/insights) as a starting point.

3. If you are writing a package that will be published:

- Make sure you are dual-exporting cjs and esm correctly, see [how the lazer
sdk package builds](./lazer/sdk/js/package.json) (in particular look at the
`build:cjs` and `build:esm` tasks) for an example for how to do this

- Ensure you have properly configured [subpath
exports](https://nodejs.org/api/packages.html#subpath-exports) to reference
the esm and cjs outputs so that your package can be consumed correctly in
both environments. Again, see [the lazer sdk](./lazer/sdk/js/package.json)
as an example for doing this correctly.

- Ensure you have set a `main` and `types` property on your `package.json`
pointing to your cjs entrypoint for use in older javascript environments.

- Ensure you configure the `files` property on your `package.json` to include
all output files and to exclude source files & tooling configuration. This
will result in smaller package sizes.

## Audit / Feature Status

**This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
Expand Down
26 changes: 19 additions & 7 deletions lazer/sdk/js/package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,33 @@
{
"name": "@pythnetwork/pyth-lazer-sdk",
"version": "0.1.0",
"version": "0.1.1",
"description": "Pyth Lazer SDK",
"publishConfig": {
"access": "public"
Riateche marked this conversation as resolved.
Show resolved Hide resolved
},
"files": [
"lib/**/*"
"dist/**/*"
],
"main": "./dist/cjs/index.js",
"types": "./dist/cjs/index.d.ts",
"exports": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.js"
},
"require": {
"types": "./dist/cjs/index.d.ts",
"default": "./dist/cjs/index.js"
}
},
"scripts": {
"build:cjs": "tsc --project tsconfig.json --verbatimModuleSyntax false --module commonjs --outDir ./dist/cjs && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
"build:esm": "tsc --project tsconfig.json --outDir ./dist/esm && echo '{\"type\":\"module\"}' > dist/esm/package.json",
"build:cjs": "tsc --project tsconfig.build.json --verbatimModuleSyntax false --module commonjs --outDir ./dist/cjs && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
"build:esm": "tsc --project tsconfig.build.json --outDir ./dist/esm && echo '{\"type\":\"module\"}' > dist/esm/package.json",
"fix:lint": "eslint --fix .",
"test:lint": "eslint .",
"test:types": "tsc",
"example": "node --loader ts-node/esm examples/index.js",
"test": "pnpm run test:lint && pnpm run build:cjs && pnpm run build:esm",
"doc": "typedoc --out docs/typedoc src",
"test:lint": "eslint .",
"fix:lint": "eslint --fix .",
"publish": "pnpm run script -- publish"
},
"devDependencies": {
Expand Down
9 changes: 9 additions & 0 deletions lazer/sdk/js/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"incremental": false,
"declaration": true
},
"exclude": ["node_modules", "dist", "examples/"]
}
3 changes: 2 additions & 1 deletion lazer/sdk/js/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
"extends": "@cprussin/tsconfig/base.json"
"extends": "@cprussin/tsconfig/base.json",
"exclude": ["node_modules", "dist"]
}
8 changes: 7 additions & 1 deletion turbo.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"ui": "tui",
"tasks": {
"build": {
"dependsOn": ["^build"],
"dependsOn": ["^build", "build:cjs", "build:esm"],
"inputs": [
"$TURBO_DEFAULT$",
"!README.md",
Expand All @@ -16,6 +16,12 @@
],
"outputs": ["dist/**", "lib/**"]
},
"build:cjs": {
"outputs": ["dist/cjs/**"]
},
"build:esm": {
"outputs": ["dist/esm/**"]
},
"fix": {
"dependsOn": ["fix:lint", "fix:format"],
"cache": false
Expand Down
Loading