|
| 1 | +# Quick Start Installation |
| 2 | + |
| 3 | +Because this package is currently privately published to the GitHub npm package registry, you'll need to log in to the package registry before you can install the package. To log in you'll need your GitHub username and a personal access token with the correct permissions. |
| 4 | + |
| 5 | +## 1. To get your personal access token on GitHub, follow these steps: |
| 6 | + |
| 7 | +1. **Log in to GitHub**: Go to your GitHub account. |
| 8 | +2. **Navigate to Developer Settings**: |
| 9 | + * Click on your profile photo in the upper-right corner of the page. |
| 10 | + * Select Settings. |
| 11 | + * In the left sidebar, click Developer settings. |
| 12 | +3. **Access Personal Access Tokens**: |
| 13 | + * Under the Personal access tokens section in the sidebar, click either Tokens (classic) or Fine-grained tokens, depending on your preference. |
| 14 | +4. **Generate a New Token**: |
| 15 | + * Click Generate new token (for classic tokens, select Generate new token (classic)). |
| 16 | + * Provide a descriptive name in the "Note" field. |
| 17 | + * Set an expiration date if needed. |
| 18 | + * Choose the required scopes or permissions for the token. For installing the package, we will need "write:packages" (Upload packages to GitHub Package Registry), "read:packages" (Download packages from GitHub Package Registry) and "repo". |
| 19 | + |
| 20 | +5. **Generate and Save the Token**: |
| 21 | + * Click Generate token. |
| 22 | + * Optionally, copy the new token to your clipboard for immediate use. Make sure to save it securely, as you won’t be able to view it again. |
| 23 | + |
| 24 | +## 2. Next, you will need to add the GitHub registry path to the npm config file `.npmrc` so that npm knows to look for the package we want to authenticate for within the GitHub registry rather than the npm website. |
| 25 | + |
| 26 | +1. Add this line to the `.npmrc` file: `@communitiesuk:registry=https://npm.pkg.github.com` |
| 27 | + |
| 28 | +## 3. Now we can log in: |
| 29 | + |
| 30 | +1. Enter the following command into the terminal: |
| 31 | + ```bash |
| 32 | + npm login --scope=@communitiesuk --auth-type=legacy --registry=https://npm.pkg.github.com |
| 33 | + ``` |
| 34 | +2. Enter your GitHub username, followed by the PAT token we obtained in the previous step as the password. When copying the token into the terminal, it may not be visible. Press the "Enter" key regardless and it should submit. |
| 35 | + |
| 36 | +> Username: USERNAME |
| 37 | +> Password: TOKEN |
| 38 | + |
| 39 | +More information about the GitHub npm registry can be found here: [https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry) |
| 40 | + |
| 41 | +## 4. Now you are logged in, you can install the package: |
| 42 | + |
| 43 | +1. Enter the npm install command for this package, using the latest version. The package should start installing. |
| 44 | + |
| 45 | +To import a component from the newly installed package, you can add an import statement in the following structure to your Svelte page file: |
| 46 | + |
| 47 | +```javascript |
| 48 | +import { InternalHeader, NotificationBanner, WarningText, SearchAutocomplete, Accordion} from "@communitiesuk/svelte-component-library"; |
| 49 | +``` |
| 50 | +
|
| 51 | +See the documentation app for examples of how to use the imported components. |
| 52 | +
|
| 53 | +2. To make sure govuk styles are applied correctly add this script tag to the app.html body tag section: |
| 54 | +
|
| 55 | +```javascript |
| 56 | +<script> |
| 57 | + document.body.className += |
| 58 | + " js-enabled" + |
| 59 | + ("noModule" in HTMLScriptElement.prototype |
| 60 | + ? " govuk-frontend-supported" |
| 61 | + : ""); |
| 62 | +</script> |
| 63 | +``` |
| 64 | +# Releasing a new version of the Svelte Component Library |
| 65 | +
|
| 66 | +This guide outlines the steps to bump the version of your package, tag the release in Git, and push it to prepare for publishing. |
| 67 | +
|
| 68 | +## 1. Commit Your Changes |
| 69 | +
|
| 70 | +Before versioning, ensure all your code changes are committed to Git: |
| 71 | +
|
| 72 | +```bash |
| 73 | +git add . |
| 74 | +git commit -m "Your descriptive commit message" |
| 75 | +``` |
| 76 | +
|
| 77 | +Make sure you are on your main development branch you want to release (e.g., `main`). |
| 78 | +
|
| 79 | +## 2. Bump the Package Version |
| 80 | +
|
| 81 | +Use the `npm version` command to update `package.json` and `package-lock.json`, create a commit, and create an annotated Git tag. Choose **one** of the following based on [Semantic Versioning (SemVer)](https://semver.org/): |
| 82 | +
|
| 83 | +* **Patch Release (Bug fixes, tiny changes - e.g., 0.1.8 -> 0.1.9):** |
| 84 | + ```bash |
| 85 | + npm version patch |
| 86 | + ``` |
| 87 | +* **Minor Release (New features, backward-compatible - e.g., 0.1.8 -> 0.2.0):** |
| 88 | + ```bash |
| 89 | + npm version minor |
| 90 | + ``` |
| 91 | +* **Major Release (Breaking changes - e.g., 0.1.8 -> 1.0.0):** |
| 92 | + ```bash |
| 93 | + npm version major |
| 94 | + ``` |
| 95 | +* **Specific Version:** |
| 96 | + ```bash |
| 97 | + npm version <new-version> # Replace <new-version> with the desired version, e.g., 1.2.3 |
| 98 | + ``` |
| 99 | +
|
| 100 | +## 3. Push Changes and Tags |
| 101 | +
|
| 102 | +Push the commit and the new tag created by `npm version` to your remote Git repository (e.g., GitHub): |
| 103 | +
|
| 104 | +```bash |
| 105 | +git push && git push --tags |
| 106 | +``` |
| 107 | +
|
| 108 | +* `git push`: Pushes the version commit. |
| 109 | +* `git push --tags`: Pushes the newly created version tag. |
| 110 | +
|
| 111 | +## 4. Publishing (Automatic via GitHub Actions) |
| 112 | +
|
| 113 | +Now the tag has been pushed, we can create a release on GitHub to trigger the GitHub Actions workflow defined in `.github/workflows/npm-publish-github-packages.yml`, which will handle the actual `npm publish` step to GitHub Packages. |
| 114 | +
|
| 115 | +Click on "create new release" from the repo homepage. |
| 116 | +
|
| 117 | +Choose the target branch that you want to release (e.g. main). |
| 118 | +
|
| 119 | +Choose the tag version pushed to GitHub in a previous step. |
| 120 | +
|
| 121 | +Click generate release notes, and add any additional write-up to describe the changes in this release. |
| 122 | +
|
| 123 | +Amend the release title to something appropriate, including the version number in the title. |
| 124 | +
|
| 125 | +Click "Set as pre-release" given the package is not stable yet. |
| 126 | +
|
| 127 | +Click the publish release button. |
| 128 | +
|
| 129 | +If you now go to the "Actions" tab in the repo's horizontal nav bar, you'll see the publish workflow being triggered. Once complete, the package will be uploaded and the new version can be installed. |
| 130 | +
|
1 | 131 | # create-svelte
|
2 | 132 |
|
3 | 133 | Everything you need to build a Svelte library, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte).
|
@@ -49,10 +179,10 @@ You can preview the production build with `npm run preview`.
|
49 | 179 |
|
50 | 180 | ## Publishing
|
51 | 181 |
|
52 |
| -Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)). |
| 182 | +Go into the `package.json` and give your package the desired name through the `"name"` option. Also, consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)). |
53 | 183 |
|
54 | 184 | To publish your library to [npm](https://www.npmjs.com):
|
55 | 185 |
|
56 | 186 | ```bash
|
57 | 187 | npm publish
|
58 |
| -``` |
| 188 | +``` |
0 commit comments