Skip to content

Commit

Permalink
feat: initial version of MUI icons re-packaged
Browse files Browse the repository at this point in the history
  • Loading branch information
joschka committed Dec 20, 2023
1 parent 772e824 commit ea97306
Show file tree
Hide file tree
Showing 8 changed files with 2,542 additions and 844 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ name: Release
# setup the workflow trigger(s) according to your needs
# see: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow
on:
push:
branches: ["main", "alpha", "beta", "next", "next-major"]
# push:
# branches: ["main", "alpha", "beta", "next", "next-major"]
# manual
workflow_dispatch:

Expand All @@ -20,7 +20,7 @@ jobs:
with:
node-version: 18
registry-url: https://registry.npmjs.org
scope: "@digitalservice4germany"
scope: "@digitalservicebund"
- run: npm ci
- run: npm run build
- run: npm test
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules
dist
material-ui
51 changes: 2 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,4 @@
# npm package example
# icons

Minimal starting point for creating a DigitalService npm package, which you can release with one manual click or (if applicable) triggered automatically by an event. Requires consistent use of conventional commits!

## Enabler: Conventional commits

> The Conventional Commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of. This convention dovetails with SemVer, by describing the features, fixes, and breaking changes made in commit messages.
source: [conventionalcommits.org](https://www.conventionalcommits.org/)

Putting in the effort to write machine-readable commits at commit time frees one from creating a changelog and figuring out the next version number at release time. This makes releasing super simple and ensures that it happens often.

## Assumption: Release from `dist` folder

Assumption: you have some kind of build step and you want to release only your build artifact (`dist` folder). Make sure to have a `package.json` in the `dist` folder before releasing. Feel free to adapt if your package is different.

## Good to know: Version in package.json

The `"version"` field in the `package.json` *in the repository* is never updated. It's always `"0.0.0-development"`. The *published* `package.json` though has the correct current version. You never have to set a version string anywhere.

## Good to have: npm package provenance

It links packages to their source and build and increases trust in the supply chain. This is only possible when the `npm release` runs on GitHub Actions, not when you release on your local machine.

Make sure to have the following configuration in your `package.json` to enable npm package provenance.

```json
"publishConfig": {
"provenance": true
},
```

## Mandatory: Commit message linting

Magically simple releasing only works with correct conventional commits. You must always use them! That's why linting is basically mandatory. This example uses `commitlint` with `lefthook` as one possible way.

## Checklist when not using this template repository

In case you just want to cherry pick for your existing package.

* `package.json`: set `"version"` to `"0.0.0-development"` (optional, but recommended)
* `package.json`: add `"publishConfig": { "provenance": true }` (optional, but recommended)
* repository settings: add a `NPM_TOKEN` repository secret (repository -> settings -> secrets and variables -> actions -> new repository secret). Find the value in 1Password ("NPM"), look for "Publish Token," its value starts with "npm_"
* copy `.github/workflows/release.yml` and adapt to your needs. Make sure to not remove permissions and to keep the configuration of the `setup-node` action.
* `npm install --save-dev semantic-release`

### For linting

* `npm install --save-dev @commitlint/cli @commitlint/config-conventional` + configuration in `commitlint.config.js`
* `npm install --save-dev lefthook` + configuration in `lefthook.yml`
Google's Material UI icons re-packaged as a set of React components without dependencies.

15 changes: 15 additions & 0 deletions build
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail
set -o verbose

original_svg_path="./material-ui/packages/mui-icons-material/material-icons"
react_dist_path="./dist/react"
svg_dist_path="./dist/svg"

mkdir --parents $react_dist_path $svg_dist_path
git clone --depth=1 --branch=master "https://github.com/mui/material-ui.git"
cp $original_svg_path/*.svg $svg_dist_path
npx @svgr/cli --no-svgo --no-index --typescript --out-dir $react_dist_path -- $svg_dist_path
Empty file removed dist/.keep
Empty file.
Loading

0 comments on commit ea97306

Please sign in to comment.