scaleway-lib is a set of NPM packages used at Scaleway.
-
@scaleway/changesets-renovate: A tool to automatically create changeset on renovate branches -
@scaleway/fuzzy-search: fuzzy search utility -
@scaleway/oxfmt-config: An oxfmt opiniated configuration. -
@scaleway/oxlint-config: An oxlint opiniated configuration. -
@scaleway/random-name: A tiny utility to generate random names. -
@scaleway/regex: usefull regex named. -
@scaleway/use-dataloader: A tiny react hook to to handle api requests. -
@scaleway/use-growthbook: A tiny hook to handle Growthbook Feature flag and A/B test tool. -
@scaleway/use-i18n: A tiny hook to handle i18n. -
@scaleway/use-storage: A React hook to interact with local/session storage in reactive way with the same API as setState -
@scaleway/validate-icu-locales: A small cli to check ICU locales error
$ git clone git@github.com:scaleway/scaleway-lib.git
$ cd scaleway-lib
$ pnpm install
$ # ... do your changes ...
$ pnpm run lint
$ pnpm run test:unit
yalcis a tool aiming to simplify working with local npm packages by providing a different workflow thannpm/yarn/pnpm link, hence avoiding most of their issues with module resolving.
$ pnpm install -g yalc # Make sure to have the yalc binary$ cd scaleway-lib/packages/example_package
$ pnpm run build && yalc publish
$ # Now it's ready to install in your project
$ cd ../../../project-something
$ yalc add @scaleway/package-name
$ cd ../scaleway-lib/packages/example_package
$ # If you do some changes into your package
$ pnpm run build && yalc publish --push --sig # --push will automatically update the package on projects where it have been added, --sig updates the signature hash to trigger webpack update
⚠️ since 1.0.0.pre.51 (2021-04-23),yalc publishneeds the--sigoption to trigger webpack module actual update.
⚠️ yalccreate ayalc.lockand updates thepackage.jsonin the target project. Make sure to not commit these changes
If you need to test a package that is used in more than one project in a pnpm workspace, it can be tedious to add the package in all projects and you might still have issues with modules resolution.
In order to install your local package in all the projects of the monorepo, you can use the pnpm overrides feature:
- first install the package using yalc (
yalc add @scaleway/package) at the root of the pnpm workspace - then add a pnpm override to use the yalc version in the whole workspace
Example package.json:
"dependencies": {
"@scaleway/package": "file:.yalc/@scaleway/package", // <- added by yalc
}
"pnpm": {
"overrides": {
"@scaleway/package": "$@scaleway/package", // <- tell pnpm to use the version referenced in the dependencies
}
}$ cd packages/example_package && pnpm link
$ cd - && pnpm run build # rebuild the package
$ # Now it's ready to link into your project
$ cd ../project-something
$ pnpm link @scaleway/example_package$ pnpm run lint
$ pnpm run lint:fix$ pnpm run test:unit # Will run all tests
$ pnpm run test:unit:coverage # Will generate a coverage reportThis projects uses
- turbo to manage our monorepo setup
- tsdown to compile and bundle our packages
- oxlint & oxfmt to lint and format files
- vitest to test our packages
For platform neutral packages the target is esnext by default. And for Node cli packages target is node@24
We only output ESM modules. Please read this.
We don't enforce anything on the commit level but your PR title must respect the conventionnal commits convention
- Ensure tests are still ok and code coverage have not decreased
- Follow linter rules (tldr).
- CI is enforced, you won't be able to merge unless pipeline is successful.
