@jsdevtools/npm-publish 4.0.0 → 4.1.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 +66 -4
- package/lib/action/core.d.ts +1 -1
- package/lib/action/core.js +5 -3
- package/lib/action/core.js.map +1 -1
- package/lib/action/main.js +1 -1
- package/lib/action/main.js.map +1 -1
- package/lib/cli/index.d.ts +1 -1
- package/lib/cli/index.js +3 -1
- package/lib/cli/index.js.map +1 -1
- package/lib/compare-and-publish/compare-and-publish.js +2 -4
- package/lib/compare-and-publish/compare-and-publish.js.map +1 -1
- package/lib/normalize-options.d.ts +1 -1
- package/lib/normalize-options.js +4 -4
- package/lib/normalize-options.js.map +1 -1
- package/lib/npm/call-npm-cli.d.ts +0 -1
- package/lib/npm/call-npm-cli.js +0 -1
- package/lib/npm/call-npm-cli.js.map +1 -1
- package/lib/npm/use-npm-environment.js +4 -1
- package/lib/npm/use-npm-environment.js.map +1 -1
- package/lib/options.d.ts +7 -2
- package/package.json +1 -1
- package/src/action/core.ts +6 -3
- package/src/action/main.ts +1 -1
- package/src/cli/index.ts +3 -1
- package/src/compare-and-publish/compare-and-publish.ts +1 -6
- package/src/normalize-options.ts +6 -6
- package/src/npm/call-npm-cli.ts +0 -1
- package/src/npm/use-npm-environment.ts +4 -1
- package/src/options.ts +7 -2
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://plant.treeware.earth/JS-DevTools/npm-publish)
|
|
8
8
|
|
|
9
|
-
Publish packages to npm automatically in GitHub Actions
|
|
9
|
+
Publish packages to npm automatically in GitHub Actions whenever a change to your package's `version` field is detected.
|
|
10
10
|
|
|
11
11
|
- [Change log][releases]
|
|
12
12
|
- [v3 to v4 migration guide](#v3-to-v4)
|
|
@@ -15,6 +15,40 @@ Publish packages to npm automatically in GitHub Actions by updating the version
|
|
|
15
15
|
|
|
16
16
|
[releases]: https://github.com/JS-DevTools/npm-publish/releases
|
|
17
17
|
|
|
18
|
+
## ⚠️ You probably don't need this!
|
|
19
|
+
|
|
20
|
+
This action automates a specific kind of continuous deployment to `npm`, where you want to publish whenever the `version` field in `package.json` changes on your `main` branch. If you prefer to publish on tags (for example, those created by the `npm version` command), or are using an alternative package manager like `pnpm`, you don't need this action! Simply configure `setup-node` with its `registry-url` option and call your package manager's `publish` command directly. This is more secure than relying on a third-party action like this one, and is more customizable.
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
# Publish to npm whenever a tag is pushed
|
|
24
|
+
name: Publish to npm
|
|
25
|
+
on:
|
|
26
|
+
push:
|
|
27
|
+
tags: v*
|
|
28
|
+
jobs:
|
|
29
|
+
build:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
permissions:
|
|
32
|
+
contents: read
|
|
33
|
+
id-token: write
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v5
|
|
36
|
+
- uses: actions/setup-node@v5
|
|
37
|
+
with:
|
|
38
|
+
node-version: "24"
|
|
39
|
+
registry-url: "https://registry.npmjs.org"
|
|
40
|
+
- run: npm ci
|
|
41
|
+
- run: npm test
|
|
42
|
+
- run: npm publish --provenance --ignore-scripts
|
|
43
|
+
env:
|
|
44
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
See GitHub's [Node.js publishing][] guide and npm's [trusted publishing][] docs for more details and examples.
|
|
48
|
+
|
|
49
|
+
[Node.js publishing]: https://docs.github.com/en/actions/tutorials/publish-packages/publish-nodejs-packages
|
|
50
|
+
[trusted publishing]: https://docs.npmjs.com/trusted-publishers#supported-cicd-providers
|
|
51
|
+
|
|
18
52
|
## Features
|
|
19
53
|
|
|
20
54
|
- 🧠 **Smart**
|
|
@@ -66,6 +100,30 @@ jobs:
|
|
|
66
100
|
token: ${{ secrets.NPM_TOKEN }}
|
|
67
101
|
```
|
|
68
102
|
|
|
103
|
+
If you have [trusted publishing][] configured for your package and use `npm@>=11.5.1`, you can omit the `token` input and use OIDC instead.
|
|
104
|
+
|
|
105
|
+
> [!IMPORTANT]
|
|
106
|
+
> If you're publishing a private package, you will still need to provide a read-only `token` so the action can read existing versions from the registry before publish.
|
|
107
|
+
|
|
108
|
+
```diff
|
|
109
|
+
jobs:
|
|
110
|
+
publish:
|
|
111
|
+
runs-on: ubuntu-latest
|
|
112
|
+
+ permissions:
|
|
113
|
+
+ contents: read
|
|
114
|
+
+ id-token: write # required to use OIDC
|
|
115
|
+
steps:
|
|
116
|
+
- uses: actions/checkout@v5
|
|
117
|
+
- uses: actions/setup-node@v5
|
|
118
|
+
with:
|
|
119
|
+
node-version: "24" # includes npm@11.6.0
|
|
120
|
+
- run: npm ci
|
|
121
|
+
- run: npm test
|
|
122
|
+
- uses: JS-DevTools/npm-publish@v4
|
|
123
|
+
- with:
|
|
124
|
+
- token: ${{ secrets.NPM_TOKEN }}
|
|
125
|
+
```
|
|
126
|
+
|
|
69
127
|
You can also publish to third-party registries. For example, to publish to the [GitHub Package Registry][], set `token` to `secrets.GITHUB_TOKEN` and `registry` to `https://npm.pkg.github.com`:
|
|
70
128
|
|
|
71
129
|
```yaml
|
|
@@ -103,7 +161,7 @@ You can set any or all of the following input parameters using `with`:
|
|
|
103
161
|
|
|
104
162
|
| Name | Type | Default | Description |
|
|
105
163
|
| ---------------- | ---------------------- | ----------------------------- | -------------------------------------------------------------------------------- |
|
|
106
|
-
| `token` | string |
|
|
164
|
+
| `token` | string | unspecified | Registry authentication token, not required if using [trusted publishing][]³ |
|
|
107
165
|
| `registry`¹ | string | `https://registry.npmjs.org/` | Registry URL to use. |
|
|
108
166
|
| `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish. |
|
|
109
167
|
| `tag`¹ | string | `latest` | [Distribution tag][npm-tag] to publish to. |
|
|
@@ -115,6 +173,7 @@ You can set any or all of the following input parameters using `with`:
|
|
|
115
173
|
|
|
116
174
|
1. May be specified using `publishConfig` in `package.json`.
|
|
117
175
|
2. Provenance requires npm `>=9.5.0`.
|
|
176
|
+
3. Trusted publishing npm `>=11.5.1` and must be run from a supported cloud provider.
|
|
118
177
|
|
|
119
178
|
[npm-tag]: https://docs.npmjs.com/cli/v9/commands/npm-publish#tag
|
|
120
179
|
[npm-access]: https://docs.npmjs.com/cli/v9/commands/npm-publish#access
|
|
@@ -178,7 +237,7 @@ import type { Options } from "@jsdevtools/npm-publish";
|
|
|
178
237
|
|
|
179
238
|
| Name | Type | Default | Description |
|
|
180
239
|
| -------------------- | ---------------------- | ----------------------------- | -------------------------------------------------------------------------------- |
|
|
181
|
-
| `token` | string | **required** |
|
|
240
|
+
| `token` | string | **required** | Registry authentication token, not required if using [trusted publishing][]³ |
|
|
182
241
|
| `registry`¹ | string, `URL` | `https://registry.npmjs.org/` | Registry URL to use. |
|
|
183
242
|
| `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish. |
|
|
184
243
|
| `tag`¹ | string | `latest` | [Distribution tag][npm-tag] to publish to. |
|
|
@@ -192,6 +251,7 @@ import type { Options } from "@jsdevtools/npm-publish";
|
|
|
192
251
|
|
|
193
252
|
1. May be specified using `publishConfig` in `package.json`.
|
|
194
253
|
2. Provenance requires npm `>=9.5.0`.
|
|
254
|
+
3. Trusted publishing npm `>=11.5.1` and must be run from a supported cloud provider.
|
|
195
255
|
|
|
196
256
|
### API output
|
|
197
257
|
|
|
@@ -250,7 +310,9 @@ Arguments:
|
|
|
250
310
|
|
|
251
311
|
Options:
|
|
252
312
|
|
|
253
|
-
--token <token>
|
|
313
|
+
--token <token> npm authentication token.
|
|
314
|
+
Not required if using trusted publishing.
|
|
315
|
+
See npm documentation for details.
|
|
254
316
|
|
|
255
317
|
--registry <url> Registry to read from and write to.
|
|
256
318
|
Defaults to "https://registry.npmjs.org/".
|
package/lib/action/core.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare function getInput(name: string): string | undefined;
|
|
|
14
14
|
* @param name Input name
|
|
15
15
|
* @returns The input secret value.
|
|
16
16
|
*/
|
|
17
|
-
export declare function
|
|
17
|
+
export declare function getSecretInput(name: string): string | undefined;
|
|
18
18
|
/**
|
|
19
19
|
* Get a boolean input by name.
|
|
20
20
|
*
|
package/lib/action/core.js
CHANGED
|
@@ -22,9 +22,11 @@ export function getInput(name) {
|
|
|
22
22
|
* @param name Input name
|
|
23
23
|
* @returns The input secret value.
|
|
24
24
|
*/
|
|
25
|
-
export function
|
|
26
|
-
const inputString =
|
|
27
|
-
|
|
25
|
+
export function getSecretInput(name) {
|
|
26
|
+
const inputString = getInput(name);
|
|
27
|
+
if (inputString) {
|
|
28
|
+
ghSetSecret(inputString);
|
|
29
|
+
}
|
|
28
30
|
return inputString;
|
|
29
31
|
}
|
|
30
32
|
/**
|
package/lib/action/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/action/core.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EACL,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,QAAQ,IAAI,UAAU,EACtB,IAAI,IAAI,SAAS,EACjB,SAAS,IAAI,WAAW,EACxB,SAAS,IAAI,WAAW,EACxB,SAAS,IAAI,WAAW,GACzB,MAAM,eAAe,CAAC;AAIvB,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/action/core.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EACL,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,QAAQ,IAAI,UAAU,EACtB,IAAI,IAAI,SAAS,EACjB,SAAS,IAAI,WAAW,EACxB,SAAS,IAAI,WAAW,EACxB,SAAS,IAAI,WAAW,GACzB,MAAM,eAAe,CAAC;AAIvB,mDAAmD;AACnD,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,WAAW,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,WAAW,CAAC,KAAc,CAAC,CAAC;AAC9B,CAAC;AAuBD,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,KAAmC,EACnC,YAA+B;IAE/B,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC;AAC3C,CAAC"}
|
package/lib/action/main.js
CHANGED
|
@@ -4,7 +4,7 @@ import * as core from "./core.js";
|
|
|
4
4
|
/** Run the action. */
|
|
5
5
|
async function run() {
|
|
6
6
|
const results = await npmPublish({
|
|
7
|
-
token: core.
|
|
7
|
+
token: core.getSecretInput("token"),
|
|
8
8
|
registry: core.getInput("registry"),
|
|
9
9
|
package: core.getInput("package"),
|
|
10
10
|
tag: core.getInput("tag"),
|
package/lib/action/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/action/main.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAe,UAAU,EAAiB,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,sBAAsB;AACtB,KAAK,UAAU,GAAG;IAChB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/action/main.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAe,UAAU,EAAiB,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,sBAAsB;AACtB,KAAK,UAAU,GAAG;IAChB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAuB;QACrD,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAyB;QAC3D,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;QACrD,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;KAC5C,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
|
package/lib/cli/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const USAGE = "\nUsage:\n\n npm-publish <options> [package]\n\nArguments:\n\n package The path to the package to publish.\n May be a directory, package.json, or .tgz file.\n Defaults to the package in the current directory.\n\nOptions:\n\n --token <token>
|
|
1
|
+
export declare const USAGE = "\nUsage:\n\n npm-publish <options> [package]\n\nArguments:\n\n package The path to the package to publish.\n May be a directory, package.json, or .tgz file.\n Defaults to the package in the current directory.\n\nOptions:\n\n --token <token> npm authentication token.\n Not required if using trusted publishing.\n See npm documentation for details.\n\n --registry <url> Registry to read from and write to.\n Defaults to \"https://registry.npmjs.org/\".\n\n --tag <tag> The distribution tag to check against and publish to.\n Defaults to \"latest\".\n\n --access <access> Package access, may be \"public\" or \"restricted\".\n See npm documentation for details.\n\n --provenance Publish with provenance statements.\n See npm documentation for details.\n\n --strategy <strategy> Publish strategy, may be \"all\" or \"upgrade\".\n Defaults to \"all\", see documentation for details.\n\n --no-ignore-scripts Allow lifecycle scripts, which are disabled by default\n as a security precaution. Defaults to false.\n\n --dry-run Do not actually publish anything.\n --quiet Only print errors.\n --debug Print debug logs.\n\n -v, --version Print the version number.\n -h, --help Show usage text.\n\nExamples:\n\n $ npm-publish --token abc123 ./my-package\n";
|
|
2
2
|
/**
|
|
3
3
|
* The main entry point of the CLI
|
|
4
4
|
*
|
package/lib/cli/index.js
CHANGED
|
@@ -13,7 +13,9 @@ Arguments:
|
|
|
13
13
|
|
|
14
14
|
Options:
|
|
15
15
|
|
|
16
|
-
--token <token>
|
|
16
|
+
--token <token> npm authentication token.
|
|
17
|
+
Not required if using trusted publishing.
|
|
18
|
+
See npm documentation for details.
|
|
17
19
|
|
|
18
20
|
--registry <url> Registry to read from and write to.
|
|
19
21
|
Defaults to "https://registry.npmjs.org/".
|
package/lib/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CpB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,OAAe;IACxD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAW;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,YAAY,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC7D,KAAK,EAAE,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC;IAEF,MAAM,UAAU,CAAC,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { callNpmCli, E404,
|
|
1
|
+
import { callNpmCli, E404, EPUBLISHCONFLICT, PUBLISH, VIEW, } from "../npm/index.js";
|
|
2
2
|
import { compareVersions } from "./compare-versions.js";
|
|
3
3
|
import { getPublishArguments, getViewArguments } from "./get-arguments.js";
|
|
4
4
|
/**
|
|
@@ -36,9 +36,7 @@ export async function compareAndPublish(manifest, options, environment) {
|
|
|
36
36
|
const publishCall = (comparison.type ?? isDryRun)
|
|
37
37
|
? await callNpmCli(PUBLISH, publishArguments, cliOptions)
|
|
38
38
|
: { successData: undefined, errorCode: undefined, error: undefined };
|
|
39
|
-
if (publishCall.error &&
|
|
40
|
-
publishCall.errorCode !== EPUBLISHCONFLICT &&
|
|
41
|
-
publishCall.errorCode !== E409) {
|
|
39
|
+
if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) {
|
|
42
40
|
throw publishCall.error;
|
|
43
41
|
}
|
|
44
42
|
const { successData: publishData } = publishCall;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-and-publish.js","sourceRoot":"","sources":["../../src/compare-and-publish/compare-and-publish.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"compare-and-publish.js","sourceRoot":"","sources":["../../src/compare-and-publish/compare-and-publish.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,IAAI,EACJ,gBAAgB,EAEhB,OAAO,EACP,IAAI,GACL,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAA0B,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAY3E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAyB,EACzB,OAA0B,EAC1B,WAA8B;IAE9B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAChD,MAAM,UAAU,GAAG;QACjB,WAAW;QACX,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;IAEF,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,2EAA2E;IAC3E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC7C,gEAAgE;QAChE,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,QAAQ,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,WAAW,GACf,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC;QAC3B,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACzD,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAEzE,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACpE,MAAM,WAAW,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;QAC9D,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;QAC/B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC/C,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare const TAG_LATEST = "latest";
|
|
|
4
4
|
/** Normalized and sanitized auth, publish, and runtime configurations. */
|
|
5
5
|
export interface NormalizedOptions {
|
|
6
6
|
registry: URL;
|
|
7
|
-
token: string;
|
|
7
|
+
token: string | undefined;
|
|
8
8
|
tag: ConfigValue<string>;
|
|
9
9
|
access: ConfigValue<Access | undefined>;
|
|
10
10
|
provenance: ConfigValue<boolean>;
|
package/lib/normalize-options.js
CHANGED
|
@@ -17,7 +17,7 @@ export function normalizeOptions(manifest, options) {
|
|
|
17
17
|
(manifest.scope === undefined ? ACCESS_PUBLIC : undefined);
|
|
18
18
|
const defaultProvenance = manifest.publishConfig?.provenance ?? false;
|
|
19
19
|
return {
|
|
20
|
-
token: validateToken(options.token),
|
|
20
|
+
token: validateToken(options.token ?? undefined),
|
|
21
21
|
registry: validateRegistry(options.registry ?? defaultRegistry),
|
|
22
22
|
tag: setValue(options.tag, defaultTag, validateTag),
|
|
23
23
|
access: setValue(options.access, defaultAccess, validateAccess),
|
|
@@ -34,10 +34,10 @@ const setValue = (value, defaultValue, validate) => ({
|
|
|
34
34
|
isDefault: value === undefined,
|
|
35
35
|
});
|
|
36
36
|
const validateToken = (value) => {
|
|
37
|
-
if (typeof value
|
|
38
|
-
|
|
37
|
+
if (typeof value !== "string" && value !== undefined && value !== null) {
|
|
38
|
+
throw new errors.InvalidTokenError();
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
41
41
|
};
|
|
42
42
|
const validateRegistry = (value) => {
|
|
43
43
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,aAAa,EACb,iBAAiB,EAIjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAsBnC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAyB,EACzB,OAAgB;IAEhB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,IAAI,UAAU,CAAC;IAE7D,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,IAAI,YAAY,CAAC;IAEzE,MAAM,aAAa,GACjB,QAAQ,CAAC,aAAa,EAAE,MAAM;QAC9B,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,EAAE,UAAU,IAAI,KAAK,CAAC;IAEtE,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,6 @@ export interface NpmPublishData {
|
|
|
25
25
|
export declare const VIEW = "view";
|
|
26
26
|
export declare const PUBLISH = "publish";
|
|
27
27
|
export declare const E404 = "E404";
|
|
28
|
-
export declare const E409 = "E409";
|
|
29
28
|
export declare const EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
|
|
30
29
|
/**
|
|
31
30
|
* Call the NPM CLI in JSON mode.
|
package/lib/npm/call-npm-cli.js
CHANGED
|
@@ -4,7 +4,6 @@ import * as errors from "../errors.js";
|
|
|
4
4
|
export const VIEW = "view";
|
|
5
5
|
export const PUBLISH = "publish";
|
|
6
6
|
export const E404 = "E404";
|
|
7
|
-
export const E409 = "E409";
|
|
8
7
|
export const EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
|
|
9
8
|
const IS_WINDOWS = os.platform() === "win32";
|
|
10
9
|
const NPM = IS_WINDOWS ? "npm.cmd" : "npm";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AA+BvC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,10 @@ export async function useNpmEnvironment(manifest, options, task) {
|
|
|
23
23
|
].join(os.EOL);
|
|
24
24
|
const npmrcDirectory = await fs.mkdtemp(path.join(temporaryDirectory, "npm-publish-"));
|
|
25
25
|
const npmrc = path.join(npmrcDirectory, ".npmrc");
|
|
26
|
-
const environment = {
|
|
26
|
+
const environment = {
|
|
27
|
+
NODE_AUTH_TOKEN: token ?? "",
|
|
28
|
+
npm_config_userconfig: npmrc,
|
|
29
|
+
};
|
|
27
30
|
await fs.writeFile(npmrc, config, "utf8");
|
|
28
31
|
logger?.debug?.(`Temporary .npmrc created at ${npmrc}\n${config}`);
|
|
29
32
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAa7B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAyB,EACzB,OAA0B,EAC1B,IAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC5C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;IAC7E,MAAM,MAAM,GAAG;QACb,qCAAqC;QACrC,KAAK,IAAI,GAAG,iBAAiB,iCAAiC;QAC9D,YAAY,MAAM,GAAG,iBAAiB,EAAE;QACxC,EAAE;KACH,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAC9C,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"use-npm-environment.js","sourceRoot":"","sources":["../../src/npm/use-npm-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAa7B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAyB,EACzB,OAA0B,EAC1B,IAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC5C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;IAC7E,MAAM,MAAM,GAAG;QACb,qCAAqC;QACrC,KAAK,IAAI,GAAG,iBAAiB,iCAAiC;QAC9D,YAAY,MAAM,GAAG,iBAAiB,EAAE;QACxC,EAAE;KACH,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,OAAO,CACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAC9C,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG;QAClB,eAAe,EAAE,KAAK,IAAI,EAAE;QAC5B,qBAAqB,EAAE,KAAK;KAC7B,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,EAAE,KAAK,EAAE,CAAC,+BAA+B,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
package/lib/options.d.ts
CHANGED
|
@@ -21,8 +21,13 @@ export interface Logger {
|
|
|
21
21
|
}
|
|
22
22
|
/** Options that determine how/whether the package is published. */
|
|
23
23
|
export interface Options {
|
|
24
|
-
/**
|
|
25
|
-
|
|
24
|
+
/**
|
|
25
|
+
* The NPM access token to use when publishing.
|
|
26
|
+
*
|
|
27
|
+
* May be left unspecified if `npm` is running in an environment with [trusted
|
|
28
|
+
* publishing](https://docs.npmjs.com/trusted-publishers#supported-cicd-providers)
|
|
29
|
+
*/
|
|
30
|
+
token?: string | undefined;
|
|
26
31
|
/**
|
|
27
32
|
* The absolute or relative path of your package.
|
|
28
33
|
*
|
package/package.json
CHANGED
package/src/action/core.ts
CHANGED
|
@@ -35,9 +35,12 @@ export function getInput(name: string): string | undefined {
|
|
|
35
35
|
* @param name Input name
|
|
36
36
|
* @returns The input secret value.
|
|
37
37
|
*/
|
|
38
|
-
export function
|
|
39
|
-
const inputString =
|
|
40
|
-
|
|
38
|
+
export function getSecretInput(name: string): string | undefined {
|
|
39
|
+
const inputString = getInput(name);
|
|
40
|
+
if (inputString) {
|
|
41
|
+
ghSetSecret(inputString);
|
|
42
|
+
}
|
|
43
|
+
|
|
41
44
|
return inputString;
|
|
42
45
|
}
|
|
43
46
|
|
package/src/action/main.ts
CHANGED
|
@@ -5,7 +5,7 @@ import * as core from "./core.js";
|
|
|
5
5
|
/** Run the action. */
|
|
6
6
|
async function run(): Promise<void> {
|
|
7
7
|
const results = await npmPublish({
|
|
8
|
-
token: core.
|
|
8
|
+
token: core.getSecretInput("token"),
|
|
9
9
|
registry: core.getInput("registry"),
|
|
10
10
|
package: core.getInput("package"),
|
|
11
11
|
tag: core.getInput("tag"),
|
package/src/cli/index.ts
CHANGED
|
@@ -14,7 +14,9 @@ Arguments:
|
|
|
14
14
|
|
|
15
15
|
Options:
|
|
16
16
|
|
|
17
|
-
--token <token>
|
|
17
|
+
--token <token> npm authentication token.
|
|
18
|
+
Not required if using trusted publishing.
|
|
19
|
+
See npm documentation for details.
|
|
18
20
|
|
|
19
21
|
--registry <url> Registry to read from and write to.
|
|
20
22
|
Defaults to "https://registry.npmjs.org/".
|
|
@@ -2,7 +2,6 @@ import type { NormalizedOptions } from "../normalize-options.js";
|
|
|
2
2
|
import {
|
|
3
3
|
callNpmCli,
|
|
4
4
|
E404,
|
|
5
|
-
E409,
|
|
6
5
|
EPUBLISHCONFLICT,
|
|
7
6
|
type NpmCliEnvironment,
|
|
8
7
|
PUBLISH,
|
|
@@ -67,11 +66,7 @@ export async function compareAndPublish(
|
|
|
67
66
|
? await callNpmCli(PUBLISH, publishArguments, cliOptions)
|
|
68
67
|
: { successData: undefined, errorCode: undefined, error: undefined };
|
|
69
68
|
|
|
70
|
-
if (
|
|
71
|
-
publishCall.error &&
|
|
72
|
-
publishCall.errorCode !== EPUBLISHCONFLICT &&
|
|
73
|
-
publishCall.errorCode !== E409
|
|
74
|
-
) {
|
|
69
|
+
if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) {
|
|
75
70
|
throw publishCall.error;
|
|
76
71
|
}
|
|
77
72
|
|
package/src/normalize-options.ts
CHANGED
|
@@ -19,7 +19,7 @@ export const TAG_LATEST = "latest";
|
|
|
19
19
|
/** Normalized and sanitized auth, publish, and runtime configurations. */
|
|
20
20
|
export interface NormalizedOptions {
|
|
21
21
|
registry: URL;
|
|
22
|
-
token: string;
|
|
22
|
+
token: string | undefined;
|
|
23
23
|
tag: ConfigValue<string>;
|
|
24
24
|
access: ConfigValue<Access | undefined>;
|
|
25
25
|
provenance: ConfigValue<boolean>;
|
|
@@ -58,7 +58,7 @@ export function normalizeOptions(
|
|
|
58
58
|
const defaultProvenance = manifest.publishConfig?.provenance ?? false;
|
|
59
59
|
|
|
60
60
|
return {
|
|
61
|
-
token: validateToken(options.token),
|
|
61
|
+
token: validateToken(options.token ?? undefined),
|
|
62
62
|
registry: validateRegistry(options.registry ?? defaultRegistry),
|
|
63
63
|
tag: setValue(options.tag, defaultTag, validateTag),
|
|
64
64
|
access: setValue(options.access, defaultAccess, validateAccess),
|
|
@@ -80,12 +80,12 @@ const setValue = <TValue>(
|
|
|
80
80
|
isDefault: value === undefined,
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
const validateToken = (value: unknown): string => {
|
|
84
|
-
if (typeof value
|
|
85
|
-
|
|
83
|
+
const validateToken = (value: unknown): string | undefined => {
|
|
84
|
+
if (typeof value !== "string" && value !== undefined && value !== null) {
|
|
85
|
+
throw new errors.InvalidTokenError();
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
89
89
|
};
|
|
90
90
|
|
|
91
91
|
const validateRegistry = (value: unknown): URL => {
|
package/src/npm/call-npm-cli.ts
CHANGED
|
@@ -42,7 +42,10 @@ export async function useNpmEnvironment<TReturn>(
|
|
|
42
42
|
path.join(temporaryDirectory, "npm-publish-")
|
|
43
43
|
);
|
|
44
44
|
const npmrc = path.join(npmrcDirectory, ".npmrc");
|
|
45
|
-
const environment = {
|
|
45
|
+
const environment = {
|
|
46
|
+
NODE_AUTH_TOKEN: token ?? "",
|
|
47
|
+
npm_config_userconfig: npmrc,
|
|
48
|
+
};
|
|
46
49
|
|
|
47
50
|
await fs.writeFile(npmrc, config, "utf8");
|
|
48
51
|
|
package/src/options.ts
CHANGED
|
@@ -24,8 +24,13 @@ export interface Logger {
|
|
|
24
24
|
|
|
25
25
|
/** Options that determine how/whether the package is published. */
|
|
26
26
|
export interface Options {
|
|
27
|
-
/**
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The NPM access token to use when publishing.
|
|
29
|
+
*
|
|
30
|
+
* May be left unspecified if `npm` is running in an environment with [trusted
|
|
31
|
+
* publishing](https://docs.npmjs.com/trusted-publishers#supported-cicd-providers)
|
|
32
|
+
*/
|
|
33
|
+
token?: string | undefined;
|
|
29
34
|
|
|
30
35
|
/**
|
|
31
36
|
* The absolute or relative path of your package.
|