@featherk/icons 0.15.7 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/bin/featherk-fontawesome-setup.mjs +4 -0
- package/dist/docs-manifest.d.ts +1 -0
- package/dist/docs-manifest.js +7 -5
- package/dist/fontawesome/build.cjs +1 -2
- package/dist/fontawesome/build.d.ts +1 -1
- package/dist/fontawesome/build.mjs +2 -3
- package/dist/fontawesome/catalog.cjs +0 -13
- package/dist/fontawesome/catalog.d.ts +0 -8
- package/dist/fontawesome/catalog.mjs +0 -13
- package/dist/fontawesome/chunks/{generate-BBurrhLv.cjs → generate-B_FxftR7.cjs} +12 -1
- package/dist/fontawesome/chunks/{generate-Zq9q2YZD.mjs → generate-DF9R65sV.mjs} +13 -2
- package/dist/fontawesome/chunks/manifest-CSRIDvaR.mjs +56 -0
- package/dist/fontawesome/chunks/manifest-Yjw62jxG.cjs +55 -0
- package/dist/fontawesome/cli.cjs +25 -40
- package/dist/fontawesome/cli.mjs +25 -40
- package/dist/fontawesome/generate.d.ts +7 -0
- package/dist/fontawesome/manifest.d.ts +50 -0
- package/dist/fontawesome/setup.cjs +482 -0
- package/dist/fontawesome/setup.d.ts +39 -0
- package/dist/fontawesome/setup.mjs +482 -0
- package/dist/fontawesome/vite.cjs +64 -28
- package/dist/fontawesome/vite.d.ts +26 -5
- package/dist/fontawesome/vite.mjs +65 -29
- package/docs/ICONS.md +1 -1
- package/docs/fontawesome/CreateFontAwesomeManifest.md +1 -1
- package/docs/fontawesome/FontAwesome.md +48 -44
- package/docs/fontawesome/FontAwesomeCLI.md +14 -17
- package/docs/fontawesome/FontAwesomeDeveloperSetup.md +134 -0
- package/docs/fontawesome/LICENSING.md +185 -26
- package/package.json +5 -4
- package/dist/fontawesome/catalog.test.d.ts +0 -1
- package/dist/fontawesome/cli.test.d.ts +0 -1
- package/dist/fontawesome/fontawesome-service.test.d.ts +0 -1
- package/dist/fontawesome/generate.test.d.ts +0 -1
- package/dist/fontawesome/normalize.test.d.ts +0 -1
- package/dist/fontawesome/vite.test.d.ts +0 -1
- package/dist/icon-service.test.d.ts +0 -1
- /package/{scripts/fontawesome.mjs → bin/featherk-fontawesome.mjs} +0 -0
|
@@ -20,15 +20,15 @@ The steps below are for Dev after UX/Design has selected the desired Pro variant
|
|
|
20
20
|
|
|
21
21
|
1. Confirm entitlement, Creator coverage, and approved releases with the license owner.
|
|
22
22
|
2. Dev obtains an authorized **Pro Package Token** from the Font Awesome account and supplies it privately as `FONTAWESOME_PACKAGE_TOKEN`.
|
|
23
|
-
3. Dev
|
|
24
|
-
4. Dev
|
|
23
|
+
3. Dev runs `featherk-fontawesome-setup --manifest fontawesome.keys.json`, which pins Free packages into the application and Pro packages into the private `fontawesome-pro-sources/` project at their exact catalog versions. See [Consuming Applications](#consuming-applications).
|
|
24
|
+
4. Dev builds with the application's normal scripts; wherever `fontawesome-pro-sources/` is installed, the builds include the Pro icons.
|
|
25
25
|
5. Dev preserves upstream notices and verifies publication/deployment boundaries before distribution.
|
|
26
26
|
|
|
27
27
|
A package token is not a Kit code, account password, or Kendo license key. Never paste it into chat, screenshots, source files, command arguments, or logs. Follow the organization's approved token issuance/rotation process; do not share account passwords.
|
|
28
28
|
|
|
29
29
|
## This FeatherK Repository
|
|
30
30
|
|
|
31
|
-
Normal root installation/build, Free demos, tests, and public package publishing require no Pro token. `demos/pro` is a separate private source project, not a root workspace. It requests exact `@fortawesome/pro-regular-svg-icons@7.0.0` and `@fortawesome/pro-light-svg-icons@7.0.0` packages; no paid dependency is added to the normal demo workspace or public icons package.
|
|
31
|
+
Normal root installation/build, Free demos, tests, and public package publishing require no Pro token. `demos/fontawesome-pro-sources` is a separate private source project, not a root workspace; it is the same [default layout](#default-isolated-pro-sources) every consuming application uses. It requests exact `@fortawesome/pro-regular-svg-icons@7.0.0` and `@fortawesome/pro-light-svg-icons@7.0.0` packages; no paid dependency is added to the normal demo workspace or public icons package.
|
|
32
32
|
|
|
33
33
|
The committed source-project npm configuration contains only a placeholder:
|
|
34
34
|
|
|
@@ -42,41 +42,42 @@ Do not replace the placeholder with a token or move this private registry config
|
|
|
42
42
|
From the repository root, after confirming Steps 1-2:
|
|
43
43
|
|
|
44
44
|
```sh
|
|
45
|
-
#
|
|
45
|
+
# The Font Awesome commands run from the built package; build it first.
|
|
46
|
+
npm run build --workspace=@featherk/icons
|
|
47
|
+
# Step 3: Authenticated installation runs only inside demos/fontawesome-pro-sources.
|
|
46
48
|
npm run setup:fontawesome:pro --workspace=@featherk/demos
|
|
47
|
-
# Step 4: Start the
|
|
48
|
-
npm run dev
|
|
49
|
+
# Step 4: Start the demo; with the sources installed, the Pro page renders.
|
|
50
|
+
npm run dev --workspace=@featherk/demos
|
|
49
51
|
# Step 5: Build the application and preserve emitted notices.
|
|
50
|
-
npm run build
|
|
52
|
+
npm run build --workspace=@featherk/demos
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
`setup:fontawesome:pro` runs `featherk-fontawesome-setup` without arguments, which installs `demos/fontawesome-pro-sources` from its committed lockfile with `npm ci`. The installer checks for the token without printing it. Review and commit dependency/integrity metadata for reproducible CI, ensuring it contains no credentials. Source `node_modules` and application artifacts remain ignored. No paid installation has been performed as part of implementing this setup.
|
|
54
56
|
|
|
55
57
|
The UX-approved Pro manifest requests Regular Rocket, Light Feather, and Light Heart. These pins are requested examples, not verified downloads. If entitlement, releases, or exports are unavailable, Dev must stop installation/generation and return to UX/Design for approval before changing the manifest or dependencies; never substitute silently.
|
|
56
58
|
|
|
57
|
-
The
|
|
59
|
+
The demo has no separate Pro scripts: its normal `dev` and `build` include the Pro icons once `demos/fontawesome-pro-sources` is installed, and only the Free icons otherwise. `demos/turbo.json` adds `fontawesome-pro-sources/node_modules/.package-lock.json`, which npm writes on install, to the build's cache inputs, so the root Turborepo build never replays a Free build where Pro sources are installed, or the reverse. Do not put paid outputs into shared or remote caches.
|
|
58
60
|
|
|
59
|
-
`
|
|
61
|
+
The demo's plugin options are `{ manifest: "fontawesome.keys.json" }`. With the sources installed, the plugin resolves licensed packages from `fontawesome-pro-sources/` while output guards remain relative to the demo project; Node resolution also finds already installed Free packages in parent workspace directories. Without them, it does not read that directory.
|
|
60
62
|
|
|
61
63
|
Routes are `/icons/fontawesome/free` and `/icons/fontawesome/pro`; `/icons/fontawesome` redirects to Free. The Pro page shows an unavailable state without a licensed profile, never fabricated artwork. Enabling the profile with missing/invalid sources fails the build rather than hiding an error.
|
|
62
64
|
|
|
63
65
|
### Private Local Token Input
|
|
64
66
|
|
|
65
|
-
Run one option in your own terminal. Secret input stays in the terminal, not the assistant.
|
|
67
|
+
In an interactive terminal, the installer prompts for the token with hidden input when `FONTAWESOME_PACKAGE_TOKEN` is not set. Use the options below to manage the variable yourself instead. Run one option in your own terminal. Secret input stays in the terminal, not the assistant.
|
|
66
68
|
|
|
67
69
|
Git Bash:
|
|
68
70
|
|
|
69
71
|
```bash
|
|
70
72
|
# Step 2: Type the token at the hidden prompt.
|
|
71
|
-
read -r -s -p "Font Awesome package token: "
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
npm run setup:fontawesome:pro --workspace=@featherk/demos
|
|
73
|
+
read -r -s -p "Font Awesome package token: " fa_token; echo
|
|
74
|
+
# Step 3: Pass the token to the install command only, then discard it.
|
|
75
|
+
FONTAWESOME_PACKAGE_TOKEN="$fa_token" npm run setup:fontawesome:pro --workspace=@featherk/demos
|
|
75
76
|
setup_status=$?
|
|
76
|
-
unset
|
|
77
|
+
unset fa_token
|
|
77
78
|
# Step 4: Start only after successful installation.
|
|
78
79
|
if [[ $setup_status -eq 0 ]]; then
|
|
79
|
-
npm run dev
|
|
80
|
+
npm run dev --workspace=@featherk/demos
|
|
80
81
|
fi
|
|
81
82
|
```
|
|
82
83
|
|
|
@@ -95,7 +96,7 @@ try {
|
|
|
95
96
|
Remove-Item Env:FONTAWESOME_PACKAGE_TOKEN -ErrorAction SilentlyContinue
|
|
96
97
|
}
|
|
97
98
|
# Step 4: Start only after successful installation.
|
|
98
|
-
npm run dev
|
|
99
|
+
npm run dev --workspace=@featherk/demos
|
|
99
100
|
```
|
|
100
101
|
|
|
101
102
|
Do not continue after an install error. `401`/`403` can indicate invalid/revoked credentials or insufficient entitlement. Inspect status codes without printing token/config contents. Missing releases/exports need a source/approval review, not an unpinned upgrade.
|
|
@@ -104,21 +105,136 @@ Do not continue after an install error. `401`/`403` can indicate invalid/revoked
|
|
|
104
105
|
|
|
105
106
|
Consumers need their own covered access or an enterprise agreement that actually covers them. The public FeatherK package grants no Pro rights.
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
`@featherk/icons` provides `featherk-fontawesome-setup` for consumer setup. Run it through `npx` or an npm script from the application root, on a developer machine. It reads the UX-provided keys-only manifest, the same file the Vite plugin and CLI use (a `free` array of catalog keys plus an optional `pro` array), and pins each package to the exact catalog version.
|
|
109
|
+
|
|
110
|
+
### Default: Isolated Pro Sources
|
|
111
|
+
|
|
112
|
+
Every application uses this layout unless it has a specific reason not to:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
npx featherk-fontawesome-setup --manifest fontawesome.keys.json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The command:
|
|
119
|
+
|
|
120
|
+
1. Installs the exact Free pins into the application's `devDependencies` from public npm. This step needs no token.
|
|
121
|
+
2. Writes the exact Pro pins into `fontawesome-pro-sources/`, a private source project next to the application's `package.json`, then installs it with the token from `FONTAWESOME_PACKAGE_TOKEN` or a hidden prompt. The project contains a `package.json`, a `.gitignore` for its `node_modules`, and an `.npmrc` with only the token placeholder:
|
|
122
|
+
|
|
123
|
+
```ini
|
|
124
|
+
@fortawesome:registry=https://npm.fontawesome.com/
|
|
125
|
+
//npm.fontawesome.com/:_authToken=${FONTAWESOME_PACKAGE_TOKEN}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Commit `package.json`, `package-lock.json`, and `fontawesome-pro-sources/`, including its `package-lock.json`. Configure the Vite plugin with `featherkFontAwesome({ manifest: "fontawesome.keys.json" })`.
|
|
129
|
+
|
|
130
|
+
The directory name `fontawesome-pro-sources` is fixed, so every team's setup looks the same. The plugin and CLI find the directory themselves, and installing it is what turns Pro icons on. The application's normal `dev` and `build` scripts need no changes:
|
|
131
|
+
|
|
132
|
+
- **Where `fontawesome-pro-sources/` is installed** (its `node_modules` exists), builds generate the `free` and `pro` keys, resolving Pro packages from it.
|
|
133
|
+
- **Where it is not installed**, builds generate the `free` keys alone and never read it. If a job should have installed it and didn't, code that uses a Pro key fails type checking, because the generated key union then contains only Free keys.
|
|
134
|
+
|
|
135
|
+
The application's own `npm ci` never needs the token, so developers and CI jobs without Pro access can still install it and build Free-only. Only installing `fontawesome-pro-sources/` needs Pro access, and everyone who does, or who builds where it is installed, needs an applicable seat.
|
|
136
|
+
|
|
137
|
+
A build cache keyed on tracked files, such as Turborepo's, must also key on whether the sources are installed, or it can replay a Free build where Pro is expected. Add the install marker that npm writes to the build's inputs, for example in Turborepo:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
"inputs": ["$TURBO_DEFAULT$", "fontawesome-pro-sources/node_modules/.package-lock.json"]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Keep builds that include Pro icons out of shared or remote caches.
|
|
144
|
+
|
|
145
|
+
After changing the manifest, rerun the same command. It updates both sets of pins; when the Pro pins change, it removes the stale `fontawesome-pro-sources/package-lock.json` and the install regenerates it. Review and commit the result.
|
|
146
|
+
|
|
147
|
+
On a fresh clone and in CI, run the application's normal `npm ci`, then install the source project from its committed lockfile:
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
npx featherk-fontawesome-setup
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Without arguments, the command runs `npm ci` in `fontawesome-pro-sources/` with the token, skipping lifecycle scripts and ignoring npm workspace settings. In CI it requires the committed lockfile. See [CI and Deployment](#ci-and-deployment).
|
|
154
|
+
|
|
155
|
+
### Setup Safety Checks
|
|
156
|
+
|
|
157
|
+
Before supplying the token, the command checks the `.npmrc` it will install with: the application's for `--pro-in-app`, and `fontawesome-pro-sources/.npmrc` for the default layout. It refuses any of the following:
|
|
158
|
+
|
|
159
|
+
- a `@fortawesome` registry other than `https://npm.fontawesome.com/`
|
|
160
|
+
- any reference to `FONTAWESOME_PACKAGE_TOKEN` outside `//npm.fontawesome.com/:_authToken`
|
|
161
|
+
- any other `npm.fontawesome.com` credential, including a literal token
|
|
162
|
+
|
|
163
|
+
It also pins the Font Awesome registry on the npm command line, which overrides other npm configuration, so the token can only be sent to Font Awesome. It installs with `--ignore-scripts`, so lifecycle scripts never run while the token is present, passes the token only to that npm process, and never prints it. Setup with `--manifest` changes `package.json`, so it refuses to run in CI.
|
|
164
|
+
|
|
165
|
+
The layouts cannot be mixed in one application. The default setup refuses an application whose `.npmrc` already routes `@fortawesome` to the Pro registry, and `--pro-in-app` refuses an application that has `fontawesome-pro-sources/`.
|
|
166
|
+
|
|
167
|
+
### Exception: Free Only
|
|
168
|
+
|
|
169
|
+
For an application that will use only Free icons:
|
|
170
|
+
|
|
171
|
+
```sh
|
|
172
|
+
npx featherk-fontawesome-setup --manifest fontawesome.keys.json --free-only
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Free packages come from public npm. The command needs no token or CI configuration and creates no source project. The default command behaves the same way for a manifest without Pro keys; `--free-only` also guarantees it, failing if the manifest contains Pro keys, if `fontawesome-pro-sources/` exists, or if `.npmrc` routes `@fortawesome` to a registry. Configure the Vite plugin with `{ manifest: "fontawesome.keys.json" }`. To add Pro later, add the keys to the manifest and rerun without `--free-only`.
|
|
176
|
+
|
|
177
|
+
### Exception: Pro in the Application
|
|
178
|
+
|
|
179
|
+
Use this only when an isolated source project is not an option, for example when the application's toolchain cannot resolve packages from the separate `fontawesome-pro-sources/` project:
|
|
180
|
+
|
|
181
|
+
```sh
|
|
182
|
+
npx featherk-fontawesome-setup --manifest fontawesome.keys.json --pro-in-app
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The command adds the two Font Awesome lines shown above to the application's own `.npmrc`, creating it if needed (existing settings are kept, and the lines are not duplicated on later runs), then installs the exact Free and Pro pins into the application's `devDependencies` with the token. Commit `.npmrc`, `package.json`, and `package-lock.json`, and configure the Vite plugin with `{ manifest: "fontawesome.keys.json" }`. Without `fontawesome-pro-sources/`, every build includes the Pro keys.
|
|
186
|
+
|
|
187
|
+
The cost is that the scope line routes **all** `@fortawesome` packages, Free included, to the Font Awesome registry. Every install of the application, by every developer and CI job, then needs `FONTAWESOME_PACKAGE_TOKEN` and an applicable seat.
|
|
188
|
+
|
|
189
|
+
#### Token-Scoped Installs
|
|
190
|
+
|
|
191
|
+
`npm ci` runs lifecycle scripts from the application and every dependency, and later build tools run arbitrary Node code. Any of them can read a token in their environment. Log masking and Vite's `VITE_` client-variable filter do not prevent this. Do not export the token persistently or for a whole CI build. In a Pro-in-the-application setup, give it only to an install that skips scripts, then run anything that needs scripts without it:
|
|
192
|
+
|
|
193
|
+
1. With the token: `npm ci --ignore-scripts`.
|
|
194
|
+
2. Without the token, run any install scripts the application needs:
|
|
195
|
+
- `npm rebuild` runs the dependency install scripts that step 1 skipped. On npm 12 and later, dependency scripts run only when approved in the application's `allowScripts` (`npm install-scripts approve <pkg>`), and `npm rebuild` follows the same approvals. Older npm versions run all of them.
|
|
196
|
+
- `npm rebuild` does not run the application's own lifecycle scripts. Run those explicitly, for example `npm run prepare --if-present`.
|
|
197
|
+
3. Without the token: `npm run dev`, `npm run build`, tests, and deployment. npm runs normally when the `.npmrc` placeholder is unset; only `@fortawesome` registry requests need it.
|
|
198
|
+
|
|
199
|
+
Git Bash:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
read -r -s -p "Font Awesome package token: " fa_token; echo
|
|
203
|
+
FONTAWESOME_PACKAGE_TOKEN="$fa_token" npm ci --ignore-scripts
|
|
204
|
+
install_status=$?
|
|
205
|
+
unset fa_token
|
|
206
|
+
[[ $install_status -eq 0 ]] && npm rebuild
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
PowerShell:
|
|
210
|
+
|
|
211
|
+
```powershell
|
|
212
|
+
$env:FONTAWESOME_PACKAGE_TOKEN = [System.Net.NetworkCredential]::new(
|
|
213
|
+
"", (Read-Host "Font Awesome package token" -AsSecureString)
|
|
214
|
+
).Password
|
|
215
|
+
try {
|
|
216
|
+
npm ci --ignore-scripts
|
|
217
|
+
if ($LASTEXITCODE -ne 0) { throw "Font Awesome package installation failed." }
|
|
218
|
+
} finally {
|
|
219
|
+
Remove-Item Env:FONTAWESOME_PACKAGE_TOKEN -ErrorAction SilentlyContinue
|
|
220
|
+
}
|
|
221
|
+
npm rebuild
|
|
222
|
+
```
|
|
108
223
|
|
|
109
|
-
|
|
110
|
-
- **Isolated optional source project:** install sources separately and pass `sourceRoot` to the Vite plugin. Keep application output within the consumer project.
|
|
224
|
+
The default layout needs none of this: the application's `npm ci` has no token, and `featherk-fontawesome-setup` already installs the source project with `--ignore-scripts`.
|
|
111
225
|
|
|
112
|
-
|
|
226
|
+
### Generation and Licensing Boundaries
|
|
113
227
|
|
|
114
|
-
|
|
228
|
+
Keep Pro keys in the manifest's `pro` group. Public or uncredentialed builds must not include paid inputs: run them where `fontawesome-pro-sources/` is not installed.
|
|
115
229
|
|
|
116
|
-
For applications
|
|
230
|
+
For non-Vite applications or declaration generation before a standalone type check, follow [CLI and non-Vite setup](FontAwesomeCLI.md). Registry authentication still belongs to the authorized package installation environment; the generator and browser never receive the token. Listing a key under `pro`, and installing `fontawesome-pro-sources/` only where Pro is wanted, prevent accidental selection; they do not verify license entitlement. Follow the [generated-output ignore guidance](FontAwesome.md#generated-output-and-source-checks): exclude generated files from ESLint/Prettier/Git while retaining TypeScript checks.
|
|
117
231
|
|
|
118
232
|
## CI and Deployment
|
|
119
233
|
|
|
120
234
|
FeatherK and `feather-k-<demo-name>` repositories use GitHub Actions. TeamCity applies only to enterprise apps using that platform.
|
|
121
235
|
|
|
236
|
+
In the default layout, a Pro build has three steps: the application's normal `npm ci` without the token, a token-scoped `npx featherk-fontawesome-setup` that installs `fontawesome-pro-sources/` from its lockfile, and the application's normal build without the token. Builds that don't need Pro icons skip the middle step and come out Free-only.
|
|
237
|
+
|
|
122
238
|
Use a dedicated trusted Actions job with a protected Environment and approval/branch rules. Supply the token only to source installation, not public publishing or client compilation. After checkout and Node/root dependency setup:
|
|
123
239
|
|
|
124
240
|
```yaml
|
|
@@ -128,12 +244,55 @@ Use a dedicated trusted Actions job with a protected Environment and approval/br
|
|
|
128
244
|
NPM_CONFIG_CACHE: ${{ runner.temp }}/fontawesome-pro-cache
|
|
129
245
|
run: npm run setup:fontawesome:pro --workspace=@featherk/demos
|
|
130
246
|
- name: Build licensed demo application
|
|
131
|
-
run: npm run build
|
|
247
|
+
run: npm run build --workspace=@featherk/demos
|
|
132
248
|
```
|
|
133
249
|
|
|
250
|
+
In CI, detected from `CI`, `TEAMCITY_VERSION`, or `GITHUB_ACTIONS`, the setup command refuses `--manifest` setup, and the source-project install requires the committed `package-lock.json`. Unattended jobs therefore only run a locked `npm ci` and never resolve new versions. In every layout, supply the token only to the install step that skips lifecycle scripts, never to the whole job. With no token and no interactive terminal, the command fails instead of prompting.
|
|
251
|
+
|
|
134
252
|
Configure the protected Environment separately; this fragment grants no license rights. Restrict paid caches/archives/artifacts, and never execute untrusted PR code with the token, including via `pull_request_target`. Normal public FeatherK publishing must not receive Pro credentials or use the licensed profile.
|
|
135
253
|
|
|
136
|
-
|
|
254
|
+
### TeamCity
|
|
255
|
+
|
|
256
|
+
Do not define the token as an `env.` parameter. TeamCity passes `env.` parameters to every step in the build, so build tools and lifecycle scripts could read the token. Instead, scope it to one install step:
|
|
257
|
+
|
|
258
|
+
1. In the build configuration, add a parameter named `fontawesome.package.token` with type **Password**. Use no `env.` prefix, so TeamCity does not export it to the steps' environment.
|
|
259
|
+
2. Add a Command Line step that sets the variable for one command only. Each Command Line step runs in its own process, so the variable does not carry into later steps.
|
|
260
|
+
|
|
261
|
+
For the [default layout](#default-isolated-pro-sources), leave the application's existing `npm ci` step unchanged and add this step after it:
|
|
262
|
+
|
|
263
|
+
```sh
|
|
264
|
+
# Linux agent
|
|
265
|
+
FONTAWESOME_PACKAGE_TOKEN='%fontawesome.package.token%' npx featherk-fontawesome-setup
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
```bat
|
|
269
|
+
rem Windows agent
|
|
270
|
+
set "FONTAWESOME_PACKAGE_TOKEN=%fontawesome.package.token%"
|
|
271
|
+
npx featherk-fontawesome-setup
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Leave the build step unchanged: with the sources installed, the normal build includes the Pro icons.
|
|
275
|
+
|
|
276
|
+
For [Pro in the application](#exception-pro-in-the-application), change the existing install step instead:
|
|
277
|
+
|
|
278
|
+
```sh
|
|
279
|
+
# Linux agent
|
|
280
|
+
FONTAWESOME_PACKAGE_TOKEN='%fontawesome.package.token%' npm ci --ignore-scripts
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
```bat
|
|
284
|
+
rem Windows agent
|
|
285
|
+
set "FONTAWESOME_PACKAGE_TOKEN=%fontawesome.package.token%"
|
|
286
|
+
npm ci --ignore-scripts
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
If the application or its dependencies need install scripts, add a step without the token. Use `npm rebuild` for dependency scripts, which follows `allowScripts` approvals on npm 12 and later. Run the application's own scripts explicitly, for example `npm run prepare --if-present`, because `npm rebuild` does not run them. See [Token-Scoped Installs](#token-scoped-installs).
|
|
290
|
+
|
|
291
|
+
3. Leave the build, test, and deploy steps free of the parameter. They never reference it.
|
|
292
|
+
|
|
293
|
+
Password parameters are masked in build logs, but masking does not stop code running in a step from reading the value. TeamCity also writes the step script, with the substituted value, to a temporary file on the agent. Limit the parameter to trusted build configurations and agents, and never run untrusted pull-request code in a build that defines it. Build agents must be able to reach `npm.fontawesome.com`. [Free-only](#exception-free-only) applications need no TeamCity configuration.
|
|
294
|
+
|
|
295
|
+
Tokens do not expand Creator seats.
|
|
137
296
|
|
|
138
297
|
Enterprise Pages must enforce authentication on deployed URLs/static assets; repository privacy alone is insufficient. Rendered SVGs remain extractable by authorized viewers. Preserve notices and distribute an application, not a standalone paid-icon catalog. Actual license terms govern permitted deployment.
|
|
139
298
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featherk/icons",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"main": "dist/featherk-icons.umd.js",
|
|
5
5
|
"module": "dist/featherk-icons.es.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -40,10 +40,11 @@
|
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|
|
42
42
|
"docs",
|
|
43
|
-
"
|
|
43
|
+
"bin"
|
|
44
44
|
],
|
|
45
45
|
"bin": {
|
|
46
|
-
"featherk-fontawesome": "
|
|
46
|
+
"featherk-fontawesome": "bin/featherk-fontawesome.mjs",
|
|
47
|
+
"featherk-fontawesome-setup": "bin/featherk-fontawesome-setup.mjs"
|
|
47
48
|
},
|
|
48
49
|
"peerDependencies": {
|
|
49
50
|
"vite": "^7.0.0 || ^8.0.0"
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"scripts": {
|
|
57
58
|
"build": "vite build && npm run build:fontawesome && npm run build:types && npm run build:docs-manifest",
|
|
58
59
|
"build:fontawesome": "vite build --config vite.fontawesome.config.ts",
|
|
59
|
-
"build:types": "vue-tsc --emitDeclarationOnly --declaration --declarationDir dist",
|
|
60
|
+
"build:types": "vue-tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir dist",
|
|
60
61
|
"build:docs-manifest": "node ../../scripts/generate-docs-manifest.mjs",
|
|
61
62
|
"test": "vitest --config vitest.config.ts",
|
|
62
63
|
"test:unit": "vitest run --config vitest.config.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
File without changes
|