Skip to content
/ vary Public

Changesets command shortcut sets

License

Notifications You must be signed in to change notification settings

xn-sakina/vary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c3e38d5 ยท Jan 24, 2024

History

53 Commits
May 2, 2023
Mar 11, 2022
Oct 29, 2023
May 2, 2023
Oct 29, 2023
Jan 24, 2024
Oct 29, 2023
Mar 11, 2022
Mar 11, 2022
Mar 11, 2022
May 7, 2022
May 2, 2023
Jan 24, 2024
Oct 29, 2023
Oct 29, 2023
Jan 24, 2024
Jan 24, 2024
Mar 11, 2022

Repository files navigation

@xn-sakina/vary

Changesets command shortcut sets

Install

  # pnpm v8
  pnpm add -D -w @xn-sakina/vary
  # pnpm v7
  pnpm add -DW @xn-sakina/vary

Usage

In monorepo root initial all changesets shortcut commands:

  pnpm vary init

Commands

command alias description
clean:output clean Clean all pkgs build output (dist/build/es)
init i Init changeset shortcut command sets
push p Refresh changeset config file ignore field then run changeset command (All private: true packages will add to ignore)
release r First build all pkgs(npm run build), then publish to npm
release:only ro Only use changeset publish to npm
release:quick rq First up pkgs version, then publish to npm
vp version-packages Run changeset version command for up pkgs version
sync s Sync all public packages to some registry
napi-publish np Publish multi platforms pkgs to npm with napi

Example

Case 1: 3 steps normal publish

  # 1. Select will publish pkg and write changelog 
  pnpm push
  # 2. Upgrade pkgs version
  pnpm vp
  # 3. Build all pkgs output(auto `npm run build`) then publish to npm
  pnpm release

Case 2: 2 steps quick publish

  # 1. Select will publish pkg and write changelog 
  pnpm push
  # 2. Direct publish to npm, still not need build pkg
  pnpm release:quick

Case 3: only publish package

  # Only execute publish
  pnpm release:only

Sync packages

Sync command

  # Will auto sync all public packages to cnpm by default
  pnpm vary sync

Use process.env.VARY_SYNC_AGENTS to sync multi registries:

  # Sync to `cnpm` and `tnpm`
  VARY_SYNC_AGENTS=cnpm,tnpm pnpm vary sync

Sync Github actions

name: Sync packages

on:
  push:
    # An event will not be created when you create more than three tags at once.
    # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#create
    tags:
      - '*'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout ๐Ÿ›Ž๏ธ
        uses: actions/checkout@v3

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: 18.x
          registry-url: 'https://registry.npmjs.com/'

      - name: Sync dependencies
        run: |
          npm i -g cnpm @xn-sakina/vary
          vary sync

Napi publish

Manually publish napi packages without napi-build and build.rs

  pnpm vary napi-publish
  # or `pnpm vary np`

Publish root package:

  pnpm vary np --root

Publish wasm package:

  # for Node.js
  pnpm vary np --wasm
  # for web
  pnpm vary np --wasm-web

Wasm-opt:

  pnpm vary np --wasm-opt ./target/wasm/index.wasm

(Experiment) Publish wasm with using napi-rs (wasi):

  pnpm vary np --napi-wasm

License

MIT