If you are using VSCode, you can install the Remote Containers extension. Once installed you will be prompted to reopen the folder in a container. All required dependencies will be installed in the container for you. If you're not prompted, you can run the Remote-Containers: Open Folder in Container
command from the VSCode Command Palette.
If you're not able to use the dev container, follow these instructions:
To build platform binding and wasm, make sure you have installed Rust.
On Windows, Rust requires C++ build tools. You can also select Desktop development with C++ while installing Visual Studio.
Alternatively, if Rust is not available you can run
yarn build.platform.copy
to download bindings from CDN
To build Qwik for local development, first install the dev dependencies using yarn:
yarn
Next the start
command will:
- Build the source files
- Begin the watch process so any changes will rebuild
- Run the type checking watch process with tsc
- Run the unit test watch process
yarn start
Finally, you can use yarn workspace command to run packages' commands, for example:
yarn workspace qwik-docs dev.ssr
yarn workspace @builder.io/qwik-city dev.ssr
More commands can be found in each package's package.json scripts section.
To run all Unit tests (uvu) and E2E tests (Playwright), run:
yarn test
The test
command will also ensure a build was completed.
Unit tests use uvu
yarn test.unit
To keep uvu open with the watch mode, run:
yarn test.watch
Note that the
test.watch
command isn't necessary if you're running theyarn start
command, sincestart
will also concurrently run the uvu watch process.
- Open Qwik in Stackblitz Codeflow
- Review PR in Stackblitz
E2E tests use Playwright.
To run the Playwright tests headless, from start to finish, run:
yarn test.e2e
The yarn start
command will run development builds, type check, watch unit tests, and watch the files for changes.
A full production build will:
- Builds each submodule
- Generates bundled
.d.ts
files for each submodule with API Extractor - Checks the public API hasn't changed
- Builds a minified
core.min.mjs
file - Generates the publishing
package.json
yarn build
The build output will be written to packages/qwik/dist
, which will be the directory that is published
to @builder.io/qwik.
Instead of using git commit
please use the following command:
yarn commit
You'll be asked guiding questions which will eventually create a descriptive commit message and necessary to generate meaningful release notes / CHANGELOG automatically.
- Run
yarn release.prepare
, which will test, lint and build. - Use the interactive UI to select the next version, which will update the
package.json
version
property, add the git change, and start a commit message. - Create a PR with the
package.json
change to merge tomain
. - After the
package.json
with the updated version is inmain
, click the Run Workflow button from the "Qwik CI" GitHub Action workflow. - Select the NPM dist-tag that should be used for this version, then click "Run Workflow".
- The GitHub Action will dispatch the workflow to build
@builder.io/qwik
and each of the submodules, build WASM and native bindings, combine them into one package, and validate the package before publishing to NPM. - If the build is successful and all tests and validation passes, the workflow will automatically publish to NPM, commit a git tag to the repo, and create a GitHub release.
- 🚀
The project has pre-submit hooks, which ensure that your code is correctly formatted. You can run them manually like so:
yarn lint
Some issues can be fixed automatically by using:
yarn fmt