Core: Add native ESM distribution #1523
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
- push | |
- pull_request | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
main-test: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: "Linux: Node 18" | |
# Includes 'firefox', 'chromium', and more. | |
# https://github.com/actions/virtual-environments/blob/ubuntu20/20220410.2/images/linux/Ubuntu2004-Readme.md | |
os: ubuntu-20.04 | |
node: 18.x | |
script: npm test | |
- name: "Linux: Node 20" | |
os: ubuntu-22.04 | |
node: 20.x | |
script: npm run test | |
- name: "Linux: Node 22" | |
os: ubuntu-24.04 | |
# Pinned because of https://github.com/npm/cli/issues/7657 | |
node: 22.4 | |
script: npm run test | |
- name: "Demos" | |
os: ubuntu-20.04 | |
node: 18.x | |
script: npm run test-demos | |
- name: "Windows: Node 18" | |
os: windows-latest | |
node: 18.x | |
script: npm run test-nolint | |
# use macos-12 instead of macos-latest | |
# as proxy for Intel instead of ARM | |
# because the older Puppeteer/Chrome for Node 10 compat | |
# didn't support ARM yet. | |
- name: "macOS: Node 18" | |
os: macos-12 | |
node: 18.x | |
script: npm run test-nolint | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
env: | |
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download" | |
FORCE_COLOR: "1" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
if: ${{ runner.os != 'Windows' }} | |
with: | |
path: | | |
~/.npm | |
${{ github.workspace }}/.puppeteer_download | |
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} | |
- name: Use Node.js ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- run: npm ci | |
- name: Tests | |
run: ${{ matrix.script }} | |
# To reproduce SpiderMonkey 68 builds locally: | |
# | |
# ``` | |
# you:/qunit$ npm run build | |
# | |
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh ubuntu:20.04 -c "cd /$MNT;bash" | |
# ``` | |
# ``` | |
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-68-dev | |
# root@ubuntu:/qunit$ js68 test/mozjs.js | |
# ``` | |
mozjs-68: | |
name: SpiderMonkey 68 | |
runs-on: ubuntu-20.04 | |
env: | |
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.npm | |
${{ github.workspace }}/.puppeteer_download | |
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: Install mozjs | |
run: | | |
sudo apt-fast install -y libmozjs-68-dev | |
- run: npm ci | |
- run: npm run build | |
- name: Test mozjs.js | |
run: js68 test/mozjs.js | |
- name: Test mozjs.mjs | |
run: js68 -m test/mozjs.mjs | |
# To reproduce SpiderMonkey 102 builds locally: | |
# | |
# ``` | |
# you:/qunit$ npm run build | |
# | |
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh debian:12-slim -c "cd /$MNT;bash" | |
# ``` | |
# ``` | |
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-102-dev | |
# root@ubuntu:/qunit$ js102 test/mozjs.js | |
# ``` | |
mozjs-102: | |
name: SpiderMonkey 102 | |
runs-on: ubuntu-24.04 | |
env: | |
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.npm | |
${{ github.workspace }}/.puppeteer_download | |
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: Install mozjs | |
run: | | |
sudo apt-get install -y libmozjs-102-dev | |
- run: npm ci | |
- run: npm run build | |
- name: Test mozjs.js | |
run: js102 test/mozjs.js | |
- name: Test mozjs.mjs | |
run: js102 -m test/mozjs.mjs | |
# To reproduce SpiderMonkey 115 builds locally: | |
# | |
# ``` | |
# you:/qunit$ npm run build | |
# | |
# you:/qunit$ export MNT=$(basename "$PWD"); docker run --rm --interactive --tty --mount type=bind,source="$PWD",target="/$MNT",readonly --entrypoint /bin/sh ubuntu:24.04 -c "cd /$MNT;bash" | |
# ``` | |
# ``` | |
# root@ubuntu:/qunit$ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmozjs-115-dev | |
# root@ubuntu:/qunit$ js115 test/mozjs.js | |
# ``` | |
mozjs-115: | |
name: SpiderMonkey 115 | |
runs-on: ubuntu-24.04 | |
env: | |
PUPPETEER_DOWNLOAD_PATH: "${{ github.workspace }}/.puppeteer_download" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.npm | |
${{ github.workspace }}/.puppeteer_download | |
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} | |
- name: Use Node.js 18 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- name: Install mozjs | |
run: | | |
sudo apt-get install -y libmozjs-115-dev | |
- run: npm ci | |
- run: npm run build | |
- name: Test mozjs.js | |
run: js115 test/mozjs.js | |
- name: Test mozjs.mjs | |
run: js115 -m test/mozjs.mjs |