@jsdevtools/npm-publish 2.1.0 → 2.2.1

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 CHANGED
@@ -31,7 +31,7 @@ This package can be used three different ways:
31
31
 
32
32
  - 🤖 A [**GitHub Action**](#github-action) as part of your CI/CD process
33
33
 
34
- - 🧩 A [**function**](#javascript-function) that you call in your JavaScript code
34
+ - 🧩 A [**function**](#javascript-api) that you call in your JavaScript code
35
35
 
36
36
  - 🖥 A [**CLI**](#command-line-interface) that you run in your terminal
37
37
 
@@ -39,12 +39,37 @@ This package can be used three different ways:
39
39
 
40
40
  The v1 to v2 upgrade brought a few notable **breaking changes**. To migrate, make the following updates:
41
41
 
42
- - The `type` output is now an empty string instead of `none` when no release occurs
42
+ - The `type` output is now an empty string instead of `'none'` when no release occurs
43
43
  ```diff
44
44
  - run: echo "Version changed!"
45
45
  - if: ${{ steps.publish.outputs.type != 'none' }}
46
46
  + if: ${{ steps.publish.outputs.type }}
47
47
  ```
48
+ - The `--ignore-scripts` option is now passed to `npm publish` as a security precaution. If you define any publish lifecycle scripts - `prepublishOnly`, `prepack`, `prepare`, `postpack`, `publish`, `postpublish` - run them explicitly or set the `ignore-scripts` input to `false`.
49
+ ```diff
50
+ with:
51
+ token: ${{ secrets.NPM_TOKEN }}
52
+ + ignore-scripts: false
53
+ ```
54
+ - The workflow's `.npmrc` file is no longer modified. If you have any workarounds to adjust for this misbehavior - for example, if you're using `actions/setup-node` to configure `.npmrc` - you should remove them.
55
+
56
+ ```diff
57
+ - uses: actions/setup-node@v3
58
+ with:
59
+ node-version: '18'
60
+ registry-url: https://registry.npmjs.org/
61
+
62
+ - uses: JS-DevTools/npm-publish@v1
63
+ with:
64
+ token: ${{ secrets.NPM_TOKEN }}
65
+
66
+ - name: Do some more stuff with npm
67
+ run: npm whoami
68
+ env:
69
+ - INPUT_TOKEN: ${{ secrets.NPM_TOKEN }}
70
+ + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
71
+ ```
72
+
48
73
  - The `check-version` and `greater-version-only` options have been removed and replaced with `strategy`.
49
74
  - Use `strategy: all` (default) to publish all versions that do not yet exist in the registry.
50
75
  ```diff
@@ -62,10 +87,24 @@ The v1 to v2 upgrade brought a few notable **breaking changes**. To migrate, mak
62
87
  - greater-version-only: true
63
88
  + strategy: upgrade
64
89
  ```
65
- - `check-version: false` has been removed. You don't need this action if you're not checking already published versions; use `npm` directly, instead.
90
+ - `check-version: false` has been removed. You may not need this action if you're not checking already published versions; [you can `npm` directly][publishing-nodejs-packages], instead.
91
+ ```diff
92
+ - - uses: JS-DevTools/npm-publish@v1
93
+ - with:
94
+ - token: ${{ secrets.NPM_TOKEN }}
95
+ - check-version: false
96
+ + - uses: actions/setup-node@v3
97
+ + with:
98
+ + node-version: '18'
99
+ + registry-url: https://registry.npmjs.org/
100
+ + - run: npm publish
101
+ + env:
102
+ + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
103
+ ```
66
104
 
67
105
  See the [change log][] for more details and other changes in the v2 release.
68
106
 
107
+ [publishing-nodejs-packages]: https://docs.github.com/actions/publishing-packages/publishing-nodejs-packages
69
108
  [change log]: https://github.com/JS-DevTools/npm-publish/releases
70
109
 
71
110
  ## GitHub Action
@@ -92,28 +131,58 @@ jobs:
92
131
  token: ${{ secrets.NPM_TOKEN }}
93
132
  ```
94
133
 
134
+ 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`:
135
+
136
+ ```yaml
137
+ on:
138
+ push:
139
+ branches: main
140
+
141
+ jobs:
142
+ publish:
143
+ runs-on: ubuntu-latest
144
+ permissions:
145
+ contents: read
146
+ packages: write # allow GITHUB_TOKEN to publish packages
147
+ steps:
148
+ - uses: actions/checkout@v3
149
+ - uses: actions/setup-node@v3
150
+ with:
151
+ node-version: "18"
152
+ - run: npm ci
153
+ - run: npm test
154
+ - uses: JS-DevTools/npm-publish@v2
155
+ with:
156
+ token: ${{ secrets.GITHUB_TOKEN }}
157
+ registry: "https://npm.pkg.github.com"
158
+ ```
159
+
95
160
  [workflow file]: https://help.github.com/en/actions/automating-your-workflow-with-github-actions
96
161
  [npm authentication token]: https://docs.npmjs.com/creating-and-viewing-authentication-tokens
162
+ [GitHub Package Registry]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry
97
163
 
98
164
  ### Usage
99
165
 
100
166
  You can set any or all of the following input parameters using `with`:
101
167
 
102
- | Name | Type | Default | Description |
103
- | ------------ | ---------------------- | -------------------------------- | ----------------------------------------------------------------------------- |
104
- | `token` | string | **required** | Authentication token to use with the configured registry. |
105
- | `registry` | string | `https://registry.npmjs.org/` \* | Registry URL to use. |
106
- | `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish |
107
- | `tag` | string | `latest` \* | [Distribution tag][npm-tag] to publish to. |
108
- | `access` | `public`, `restricted` | [npm defaults][npm-access] \* | Whether the package should be publicly visible or restricted. |
109
- | `provenance` | boolean | `false` \* | Run `npm publish` with the `--provenance` flag to add provenance statements. |
110
- | `strategy` | `all`, `upgrade` | `all` | Use `all` to publish all unique versions, `upgrade` for only semver upgrades. |
111
- | `dry-run` | boolean | `false` | Run `npm publish` with the `--dry-run` flag to prevent publication. |
112
-
113
- \* Default values for these options may be specified using `publishConfig` in `package.json`.
168
+ | Name | Type | Default | Description |
169
+ | ---------------- | ---------------------- | ----------------------------- | -------------------------------------------------------------------------------- |
170
+ | `token` | string | **required** | Authentication token to use with the configured registry. |
171
+ | `registry| string | `https://registry.npmjs.org/` | Registry URL to use. |
172
+ | `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish. |
173
+ | `tag| string | `latest` | [Distribution tag][npm-tag] to publish to. |
174
+ | `access| `public`, `restricted` | [npm defaults][npm-access] | Whether the package should be publicly visible or restricted. |
175
+ | `provenance`¹ ² | boolean | `false` | Run `npm publish` with the `--provenance` flag to add [provenance][] statements. |
176
+ | `strategy` | `all`, `upgrade` | `all` | Use `all` to publish all unique versions, `upgrade` for only semver upgrades. |
177
+ | `ignore-scripts` | boolean | `true` | Run `npm publish` with the `--ignore-scripts` flag as a security precaution. |
178
+ | `dry-run` | boolean | `false` | Run `npm publish` with the `--dry-run` flag to prevent publication. |
179
+
180
+ 1. May be specified using `publishConfig` in `package.json`.
181
+ 2. Provenance requires npm `>=9.5.0`.
114
182
 
115
183
  [npm-tag]: https://docs.npmjs.com/cli/v9/commands/npm-publish#tag
116
184
  [npm-access]: https://docs.npmjs.com/cli/v9/commands/npm-publish#access
185
+ [provenance]: https://docs.npmjs.com/generating-provenance-statements
117
186
 
118
187
  ### Output
119
188
 
@@ -127,8 +196,7 @@ steps:
127
196
  token: ${{ secrets.NPM_TOKEN }}
128
197
 
129
198
  - if: ${{ steps.publish.outputs.type }}
130
- run: |
131
- echo "Version changed!"
199
+ run: echo "Version changed!"
132
200
  ```
133
201
 
134
202
  | Name | Type | Description |
@@ -145,7 +213,7 @@ steps:
145
213
 
146
214
  [semver release type]: https://github.com/npm/node-semver#release_types
147
215
 
148
- ## JavaScript Function
216
+ ## JavaScript API
149
217
 
150
218
  To use npm-package in your JavaScript code, you'll need to install it using [npm][] or other package manager of choice:
151
219
 
@@ -172,20 +240,22 @@ As shown in the example above, you should pass an options object to the `npmPubl
172
240
  import type { Options } from "@jsdevtools/npm-publish";
173
241
  ```
174
242
 
175
- | Name | Type | Default | Description |
176
- | -------------------- | ---------------------- | -------------------------------- | ----------------------------------------------------------------------------- |
177
- | `token` | string | **required** | Authentication token to use with the configured registry. |
178
- | `registry` | string, `URL` | `https://registry.npmjs.org/` \* | Registry URL to use. |
179
- | `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish |
180
- | `tag` | string | `latest` \* | [Distribution tag][npm-tag] to publish to. |
181
- | `access` | `public`, `restricted` | [npm defaults][npm-access] \* | Whether the package should be publicly visible or restricted. |
182
- | `provenance` | boolean | `false` \* | Run `npm publish` with the `--provenance` flag to add provenance statements. |
183
- | `strategy` | `all`, `upgrade` | `all` | Use `all` to publish all unique versions, `upgrade` for only semver upgrades. |
184
- | `dryRun` | boolean | `false` | Run `npm publish` with the `--dry-run` flag to prevent publication. |
185
- | `logger` | object | `undefined` | Logging interface with `debug`, `info`, and `error` log methods. |
186
- | `temporaryDirectory` | string | `os.tmpdir()` | Temporary directory to hold a generated `.npmrc` file |
187
-
188
- \* Default values for these options may be specified using `publishConfig` in `package.json`.
243
+ | Name | Type | Default | Description |
244
+ | -------------------- | ---------------------- | ----------------------------- | -------------------------------------------------------------------------------- |
245
+ | `token` | string | **required** | Authentication token to use with the configured registry. |
246
+ | `registry| string, `URL` | `https://registry.npmjs.org/` | Registry URL to use. |
247
+ | `package` | string | Current working directory | Path to a package directory, a `package.json`, or a packed `.tgz` to publish. |
248
+ | `tag| string | `latest` | [Distribution tag][npm-tag] to publish to. |
249
+ | `access| `public`, `restricted` | [npm defaults][npm-access] | Whether the package should be publicly visible or restricted. |
250
+ | `provenance`¹ ² | boolean | `false` | Run `npm publish` with the `--provenance` flag to add [provenance][] statements. |
251
+ | `strategy` | `all`, `upgrade` | `all` | Use `all` to publish all unique versions, `upgrade` for only semver upgrades. |
252
+ | `ignoreScripts` | boolean | `true` | Run `npm publish` with the `--ignore-scripts` flag as a security precaution. |
253
+ | `dryRun` | boolean | `false` | Run `npm publish` with the `--dry-run` flag to prevent publication. |
254
+ | `logger` | object | `undefined` | Logging interface with `debug`, `info`, and `error` log methods. |
255
+ | `temporaryDirectory` | string | `os.tmpdir()` | Temporary directory to hold a generated `.npmrc` file |
256
+
257
+ 1. May be specified using `publishConfig` in `package.json`.
258
+ 2. Provenance requires npm `>=9.5.0`.
189
259
 
190
260
  ### Output
191
261
 
@@ -224,7 +294,7 @@ npx npm-publish --token YOUR_NPM_AUTH_TOKEN_HERE
224
294
  You can customize your call with options to change the registry, package, etc.
225
295
 
226
296
  ```bash
227
- npm-publish --token YOUR_NPM_AUTH_TOKEN_HERE --registry http://example.com ./path/to/package
297
+ npx npm-publish --token YOUR_NPM_AUTH_TOKEN_HERE --registry http://example.com ./path/to/package
228
298
  ```
229
299
 
230
300
  ### Options
@@ -261,12 +331,15 @@ Options:
261
331
  --strategy <strategy> Publish strategy, may be "all" or "upgrade".
262
332
  Defaults to "all", see documentation for details.
263
333
 
334
+ --no-ignore-scripts Allow lifecycle scripts, which are disabled by default
335
+ as a security precaution. Defaults to false.
336
+
264
337
  --dry-run Do not actually publish anything.
265
338
  --quiet Only print errors.
266
339
  --debug Print debug logs.
267
340
 
268
341
  -v, --version Print the version number.
269
- -h --help Show usage text.
342
+ -h, --help Show usage text.
270
343
 
271
344
  Examples:
272
345
 
@@ -19,9 +19,9 @@ export declare function getRequiredSecretInput(name: string): string;
19
19
  * Get a boolean input by name.
20
20
  *
21
21
  * @param name Input name
22
- * @returns True if value is "true", false if not
22
+ * @returns True if value is "true", false if "false", undefined if unset
23
23
  */
24
- export declare function getBooleanInput(name: string): boolean;
24
+ export declare function getBooleanInput(name: string): boolean | undefined;
25
25
  /**
26
26
  * Set the action as failed due to an error.
27
27
  *
@@ -36,10 +36,15 @@ exports.getRequiredSecretInput = getRequiredSecretInput;
36
36
  * Get a boolean input by name.
37
37
  *
38
38
  * @param name Input name
39
- * @returns True if value is "true", false if not
39
+ * @returns True if value is "true", false if "false", undefined if unset
40
40
  */
41
41
  function getBooleanInput(name) {
42
- return (0, core_1.getInput)(name) === "true";
42
+ const inputString = (0, core_1.getInput)(name).toLowerCase();
43
+ if (inputString === "true")
44
+ return true;
45
+ if (inputString === "false")
46
+ return false;
47
+ return undefined;
43
48
  }
44
49
  exports.getBooleanInput = getBooleanInput;
45
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/action/core.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,wCAQuB;AAIvB,mDAAmD;AACtC,QAAA,MAAM,GAAW;IAC5B,KAAK,EAAE,YAAU;IACjB,IAAI,EAAE,WAAS;IACf,KAAK,EAAE,YAAU;CAClB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,QAAQ,CAAmB,IAAY;IACrD,MAAM,WAAW,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,WAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAHD,4BAGC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,WAAW,GAAG,IAAA,eAAU,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAA,gBAAW,EAAC,WAAW,CAAC,CAAC;IACzB,OAAO,WAAW,CAAC;AACrB,CAAC;AAJD,wDAIC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AACrC,CAAC;AAFD,0CAEC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,IAAA,gBAAW,EAAC,KAAc,CAAC,CAAC;AAC9B,CAAC;AAFD,8BAEC;AAuBD,+CAA+C;AAC/C,SAAgB,SAAS,CACvB,IAAY,EACZ,KAAmC,EACnC,YAA2C;IAE3C,IAAA,gBAAW,EAAC,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC;AAC3C,CAAC;AAND,8BAMC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/action/core.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,wCAQuB;AAIvB,mDAAmD;AACtC,QAAA,MAAM,GAAW;IAC5B,KAAK,EAAE,YAAU;IACjB,IAAI,EAAE,WAAS;IACf,KAAK,EAAE,YAAU;CAClB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,QAAQ,CAAmB,IAAY;IACrD,MAAM,WAAW,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC;IACrC,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,WAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAHD,4BAGC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,WAAW,GAAG,IAAA,eAAU,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAA,gBAAW,EAAC,WAAW,CAAC,CAAC;IACzB,OAAO,WAAW,CAAC;AACrB,CAAC;AAJD,wDAIC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,MAAM,WAAW,GAAG,IAAA,eAAU,EAAC,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;AAND,0CAMC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,IAAA,gBAAW,EAAC,KAAc,CAAC,CAAC;AAC9B,CAAC;AAFD,8BAEC;AAuBD,+CAA+C;AAC/C,SAAgB,SAAS,CACvB,IAAY,EACZ,KAAmC,EACnC,YAA2C;IAE3C,IAAA,gBAAW,EAAC,IAAI,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC;AAC3C,CAAC;AAND,8BAMC"}
@@ -1 +1,2 @@
1
- export {};
1
+ /** Main action entry point. */
2
+ export declare function main(): Promise<void>;
@@ -23,6 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.main = void 0;
26
27
  /** Action entry point */
27
28
  const index_js_1 = require("../index.js");
28
29
  const core = __importStar(require("./core.js"));
@@ -36,6 +37,7 @@ async function run() {
36
37
  access: core.getInput("access"),
37
38
  provenance: core.getBooleanInput("provenance"),
38
39
  strategy: core.getInput("strategy"),
40
+ ignoreScripts: core.getBooleanInput("ignore-scripts"),
39
41
  dryRun: core.getBooleanInput("dry-run"),
40
42
  logger: core.logger,
41
43
  temporaryDirectory: process.env["RUNNER_TEMP"],
@@ -51,5 +53,14 @@ async function run() {
51
53
  core.setOutput("strategy", results.strategy);
52
54
  core.setOutput("dry-run", results.dryRun);
53
55
  }
54
- run().catch((error) => core.setFailed(error));
56
+ /** Main action entry point. */
57
+ async function main() {
58
+ try {
59
+ await run();
60
+ }
61
+ catch (error) {
62
+ core.setFailed(error);
63
+ }
64
+ }
65
+ exports.main = main;
55
66
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/action/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,0CAAyC;AACzC,gDAAkC;AAElC,sBAAsB;AACtB,KAAK,UAAU,GAAG;IAChB,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAU,EAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAC3C,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,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;KAC/C,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,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/action/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,0CAAyC;AACzC,gDAAkC;AAElC,sBAAsB;AACtB,KAAK,UAAU,GAAG;IAChB,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAU,EAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAC3C,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,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACnC,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,aAAa,CAAC;KAC/C,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;AACxB,KAAK,UAAU,IAAI;IACxB,IAAI;QACF,MAAM,GAAG,EAAE,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACvB;AACH,CAAC;AAND,oBAMC"}
@@ -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> (Required) npm authentication token.\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 --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";
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> (Required) npm authentication token.\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
@@ -33,6 +33,9 @@ Options:
33
33
  --strategy <strategy> Publish strategy, may be "all" or "upgrade".
34
34
  Defaults to "all", see documentation for details.
35
35
 
36
+ --no-ignore-scripts Allow lifecycle scripts, which are disabled by default
37
+ as a security precaution. Defaults to false.
38
+
36
39
  --dry-run Do not actually publish anything.
37
40
  --quiet Only print errors.
38
41
  --debug Print debug logs.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AACtD,qEAA6D;AAEhD,QAAA,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCpB,CAAC;AAEF;;;;;GAKG;AACI,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,OAAe;IACxD,MAAM,YAAY,GAAG,IAAA,0CAAiB,EAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,YAAY,CAAC,IAAI,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,aAAK,CAAC,CAAC;QACpB,OAAO;KACR;IAED,IAAI,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO;KACR;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,IAAA,qBAAU,EAAC,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC;AApBD,oBAoBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AACtD,qEAA6D;AAEhD,QAAA,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CpB,CAAC;AAEF;;;;;GAKG;AACI,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,OAAe;IACxD,MAAM,YAAY,GAAG,IAAA,0CAAiB,EAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,YAAY,CAAC,IAAI,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,aAAK,CAAC,CAAC;QACpB,OAAO;KACR;IAED,IAAI,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO;KACR;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,IAAA,qBAAU,EAAC,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC;AApBD,oBAoBC"}
@@ -14,6 +14,7 @@ const ARGUMENTS_OPTIONS = [
14
14
  { name: "access", type: String },
15
15
  { name: "provenance", type: Boolean },
16
16
  { name: "strategy", type: String },
17
+ { name: "no-ignore-scripts", type: Boolean },
17
18
  { name: "dry-run", type: Boolean },
18
19
  { name: "quiet", type: Boolean },
19
20
  { name: "debug", type: Boolean },
@@ -27,7 +28,12 @@ const ARGUMENTS_OPTIONS = [
27
28
  * @returns A parsed object of options.
28
29
  */
29
30
  function parseCliArguments(argv) {
30
- const { help, version, quiet, debug, ...options } = (0, command_line_args_1.default)(ARGUMENTS_OPTIONS, { argv, camelCase: true });
31
+ const { help, version, quiet, debug, ...optionFlags } = (0, command_line_args_1.default)(ARGUMENTS_OPTIONS, { argv, camelCase: true });
32
+ const options = Object.fromEntries(Object.entries(optionFlags).map(([key, value]) => {
33
+ return key === "noIgnoreScripts"
34
+ ? ["ignoreScripts", !value]
35
+ : [key, value];
36
+ }));
31
37
  return {
32
38
  help: Boolean(help),
33
39
  version: Boolean(version),
@@ -1 +1 @@
1
- {"version":3,"file":"parse-cli-arguments.js","sourceRoot":"","sources":["../../src/cli/parse-cli-arguments.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;;;;AAE3C,0EAAgD;AAGhD,MAAM,iBAAiB,GAAG;IACxB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAChC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IAChC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IAChC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5C,CAAC;AAWF;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAc;IAC9C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,IAAA,2BAAe,EACjE,iBAAiB,EACjB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAC1B,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;QACrB,OAAO,EAAE,OAAkB;KAC5B,CAAC;AACJ,CAAC;AAbD,8CAaC"}
1
+ {"version":3,"file":"parse-cli-arguments.js","sourceRoot":"","sources":["../../src/cli/parse-cli-arguments.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;;;;AAE3C,0EAAgD;AAGhD,MAAM,iBAAiB,GAAG;IACxB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAChC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;IACrC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IAChC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IAChC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5C,CAAC;AAWF;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAAc;IAC9C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,IAAA,2BAAe,EACrE,iBAAiB,EACjB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAC1B,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC/C,OAAO,GAAG,KAAK,iBAAiB;YAC9B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;QACrB,OAAO,EAAE,OAAkB;KAC5B,CAAC;AACJ,CAAC;AArBD,8CAqBC"}
@@ -14,7 +14,11 @@ const get_arguments_js_1 = require("./get-arguments.js");
14
14
  */
15
15
  async function compareAndPublish(manifest, options, environment) {
16
16
  const { name, version, packageSpec } = manifest;
17
- const cliOptions = { environment, logger: options.logger };
17
+ const cliOptions = {
18
+ environment,
19
+ ignoreScripts: options.ignoreScripts.value,
20
+ logger: options.logger,
21
+ };
18
22
  const viewArguments = (0, get_arguments_js_1.getViewArguments)(name, options);
19
23
  const publishArguments = (0, get_arguments_js_1.getPublishArguments)(packageSpec, options);
20
24
  let viewCall = await (0, index_js_1.callNpmCli)(index_js_1.VIEW, viewArguments, cliOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"compare-and-publish.js","sourceRoot":"","sources":["../../src/compare-and-publish/compare-and-publish.ts"],"names":[],"mappings":";;;AAEA,8CAOyB;AACzB,+DAAgF;AAChF,yDAA2E;AAY3E;;;;;;;GAOG;AACI,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,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAE3D,MAAM,aAAa,GAAG,IAAA,mCAAgB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAA,sCAAmB,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,MAAM,IAAA,qBAAU,EAAC,eAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,2EAA2E;IAC3E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QAC5C,gEAAgE;QAChE,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,IAAA,mCAAgB,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,QAAQ,GAAG,MAAM,IAAA,qBAAU,EAAC,eAAI,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;KACrE;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,KAAK,eAAI,EAAE;QACjD,MAAM,QAAQ,CAAC,KAAK,CAAC;KACtB;IAED,MAAM,UAAU,GAAG,IAAA,qCAAe,EAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI;QACjC,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,kBAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACzD,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAEvE,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAgB,EAAE;QACnE,MAAM,WAAW,CAAC,KAAK,CAAC;KACzB;IAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,WAAW,EAAE,EAAE;QACnB,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;AA3CD,8CA2CC"}
1
+ {"version":3,"file":"compare-and-publish.js","sourceRoot":"","sources":["../../src/compare-and-publish/compare-and-publish.ts"],"names":[],"mappings":";;;AAEA,8CAOyB;AACzB,+DAAgF;AAChF,yDAA2E;AAY3E;;;;;;;GAOG;AACI,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,IAAA,mCAAgB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAA,sCAAmB,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,MAAM,IAAA,qBAAU,EAAC,eAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,2EAA2E;IAC3E,yCAAyC;IACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QAC5C,gEAAgE;QAChE,oCAAoC;QACpC,MAAM,oBAAoB,GAAG,IAAA,mCAAgB,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,QAAQ,GAAG,MAAM,IAAA,qBAAU,EAAC,eAAI,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;KACrE;IAED,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,KAAK,eAAI,EAAE;QACjD,MAAM,QAAQ,CAAC,KAAK,CAAC;KACtB;IAED,MAAM,UAAU,GAAG,IAAA,qCAAe,EAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI;QACjC,CAAC,CAAC,MAAM,IAAA,qBAAU,EAAC,kBAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACzD,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAEvE,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,SAAS,KAAK,2BAAgB,EAAE;QACnE,MAAM,WAAW,CAAC,KAAK,CAAC;KACzB;IAED,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,WAAW,EAAE,EAAE;QACnB,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;AA/CD,8CA+CC"}
package/lib/index.js CHANGED
@@ -19,7 +19,7 @@ exports.npmPublish = void 0;
19
19
  __exportStar(require("./options.js"), exports);
20
20
  __exportStar(require("./results.js"), exports);
21
21
  __exportStar(require("./errors.js"), exports);
22
- // Export `npmPublish` as a named export and the default export
22
+ // Export `npmPublish` as a named export
23
23
  var npm_publish_js_1 = require("./npm-publish.js");
24
24
  Object.defineProperty(exports, "npmPublish", { enumerable: true, get: function () { return npm_publish_js_1.npmPublish; } });
25
25
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAwD;AACxD,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAE5B,+DAA+D;AAC/D,mDAA8C;AAArC,4GAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAwD;AACxD,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAE5B,wCAAwC;AACxC,mDAA8C;AAArC,4GAAA,UAAU,OAAA"}
@@ -8,6 +8,7 @@ export interface NormalizedOptions {
8
8
  tag: ConfigValue<string>;
9
9
  access: ConfigValue<Access | undefined>;
10
10
  provenance: ConfigValue<boolean>;
11
+ ignoreScripts: ConfigValue<boolean>;
11
12
  dryRun: ConfigValue<boolean>;
12
13
  strategy: ConfigValue<Strategy>;
13
14
  logger: Logger | undefined;
@@ -51,6 +51,7 @@ function normalizeOptions(manifest, options) {
51
51
  tag: setValue(options.tag, defaultTag, validateTag),
52
52
  access: setValue(options.access, defaultAccess, validateAccess),
53
53
  provenance: setValue(options.provenance, defaultProvenance, Boolean),
54
+ ignoreScripts: setValue(options.ignoreScripts, true, Boolean),
54
55
  dryRun: setValue(options.dryRun, false, Boolean),
55
56
  strategy: setValue(options.strategy, options_js_1.STRATEGY_ALL, validateStrategy),
56
57
  logger: options.logger,
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../src/normalize-options.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Logger } from "../options.js";
2
2
  import type { NpmCliEnvironment } from "./use-npm-environment.js";
3
3
  export interface NpmCliOptions {
4
4
  environment: NpmCliEnvironment;
5
+ ignoreScripts: boolean;
5
6
  logger?: Logger | undefined;
6
7
  }
7
8
  export interface NpmCallResult<CommandT extends Command> {
@@ -36,6 +36,7 @@ exports.E404 = "E404";
36
36
  exports.EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
37
37
  const NPM = node_os_1.default.platform() === "win32" ? "npm.cmd" : "npm";
38
38
  const JSON_MATCH_RE = /(\{[\s\S]*\})/mu;
39
+ const baseArguments = (options) => options.ignoreScripts ? ["--ignore-scripts", "--json"] : ["--json"];
39
40
  /**
40
41
  * Call the NPM CLI in JSON mode.
41
42
  *
@@ -45,7 +46,7 @@ const JSON_MATCH_RE = /(\{[\s\S]*\})/mu;
45
46
  * @returns The parsed JSON, or stdout if unparsable.
46
47
  */
47
48
  async function callNpmCli(command, cliArguments, options) {
48
- const { stdout, stderr, exitCode } = await execNpm([command, "--ignore-scripts", "--json", ...cliArguments], options.environment, options.logger);
49
+ const { stdout, stderr, exitCode } = await execNpm([command, ...baseArguments(options), ...cliArguments], options.environment, options.logger);
49
50
  let successData;
50
51
  let errorCode;
51
52
  let error;
@@ -54,7 +55,9 @@ async function callNpmCli(command, cliArguments, options) {
54
55
  }
55
56
  else {
56
57
  const errorPayload = parseJson(stdout, stderr);
57
- errorCode = errorPayload?.error?.code?.toUpperCase();
58
+ if (errorPayload?.error?.code) {
59
+ errorCode = String(errorPayload.error.code).toUpperCase();
60
+ }
58
61
  error = new errors.NpmCallError(command, exitCode, stderr);
59
62
  }
60
63
  return { successData, errorCode, error };
@@ -79,6 +82,8 @@ async function execNpm(commandArguments, environment, logger) {
79
82
  npm.stdout.on("data", (data) => (stdout += data));
80
83
  npm.stderr.on("data", (data) => (stderr += data));
81
84
  npm.on("close", (code) => {
85
+ logger?.debug?.(`Received stdout: ${stdout}`);
86
+ logger?.debug?.(`Received stderr: ${stderr}`);
82
87
  resolve({
83
88
  stdout: stdout.trim(),
84
89
  stderr: stderr.trim(),
@@ -1 +1 @@
1
- {"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-npm-cli.js","sourceRoot":"","sources":["../../src/npm/call-npm-cli.ts"],"names":[],"mappings":"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"}
package/lib/options.d.ts CHANGED
@@ -53,7 +53,7 @@ export interface Options {
53
53
  * packages.
54
54
  *
55
55
  * Defaults to "restricted" for scoped packages, unless that package has been
56
- * previously published as `public`
56
+ * previously published as `public`.
57
57
  *
58
58
  * Can be set by the package.json's `publishConfig` field.
59
59
  */
@@ -72,13 +72,21 @@ export interface Options {
72
72
  /**
73
73
  * Version check strategy.
74
74
  *
75
- * If "upgrade" (default), the package will only be published if its version
76
- * is higher than the existing version on the configured tag. If "always", the
77
- * package will be published if its version is simply not yet published.
78
- *
79
- * Defaults to `upgrade`.
75
+ * - `always` (default): the package will be published if its version is simply
76
+ * not yet published.
77
+ * - `upgrade`: the package will only be published if its version is higher than
78
+ * the existing version on the configured tag.
80
79
  */
81
80
  strategy?: Strategy | undefined;
81
+ /**
82
+ * Ignore lifecycle scripts.
83
+ *
84
+ * If `true` (default), `--ignore-scripts` will be passed to `npm`. If you
85
+ * rely on publish lifecycle scripts - i.e. `prepublishOnly`, `prepack`,
86
+ * `prepare`, `postpack`, `publish`, `postpublish` - you should set this to
87
+ * `false` or rework your build and publish workflow.
88
+ */
89
+ ignoreScripts?: boolean | undefined;
82
90
  /**
83
91
  * Pretend to publish, but don't actually upload to the registry.
84
92
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jsdevtools/npm-publish",
3
3
  "description": "Fast, easy publishing to NPM",
4
- "version": "2.1.0",
4
+ "version": "2.2.1",
5
5
  "keywords": [
6
6
  "github-action",
7
7
  "npm",
@@ -19,6 +19,7 @@
19
19
  "type": "git",
20
20
  "url": "https://github.com/JS-DevTools/npm-publish.git"
21
21
  },
22
+ "type": "commonjs",
22
23
  "main": "lib/index.js",
23
24
  "types": "lib/index.d.ts",
24
25
  "bin": {
@@ -53,34 +54,33 @@
53
54
  "devDependencies": {
54
55
  "@actions/core": "^1.10.0",
55
56
  "@types/command-line-args": "^5.0.0",
56
- "@types/node": "^18.15.11",
57
- "@types/tar": "^6.1.4",
58
- "@typescript-eslint/eslint-plugin": "^5.59.0",
59
- "@typescript-eslint/parser": "^5.59.0",
60
- "@vitest/coverage-istanbul": "^0.30.1",
57
+ "@types/node": "^20.3.3",
58
+ "@types/tar": "^6.1.5",
59
+ "@typescript-eslint/eslint-plugin": "^5.59.2",
60
+ "@typescript-eslint/parser": "^5.59.2",
61
+ "@vitest/coverage-istanbul": "^0.32.4",
61
62
  "concurrently": "^8.0.1",
62
- "esbuild": "0.17.17",
63
- "eslint": "^8.38.0",
63
+ "esbuild": "^0.18.11",
64
+ "eslint": "^8.39.0",
64
65
  "eslint-config-prettier": "^8.8.0",
65
66
  "eslint-import-resolver-typescript": "^3.5.5",
66
67
  "eslint-plugin-import": "npm:eslint-plugin-i@^2.27.5-1",
67
- "eslint-plugin-jsdoc": "^43.0.6",
68
- "eslint-plugin-n": "^15.7.0",
68
+ "eslint-plugin-jsdoc": "^46.2.4",
69
+ "eslint-plugin-n": "^16.0.0",
69
70
  "eslint-plugin-promise": "^6.1.1",
70
71
  "eslint-plugin-sonarjs": "^0.19.0",
71
- "eslint-plugin-unicorn": "^46.0.0",
72
- "prettier": "^2.8.7",
72
+ "eslint-plugin-unicorn": "^46.0.1",
73
+ "prettier": "^2.8.8",
73
74
  "prettier-plugin-jsdoc": "^0.4.2",
74
75
  "rimraf": "^5.0.0",
75
- "testdouble": "^3.17.2",
76
- "testdouble-vitest": "^0.1.2",
77
76
  "typescript": "^5.0.4",
78
- "vitest": "^0.30.1"
77
+ "vitest": "^0.32.4",
78
+ "vitest-when": "^0.1.2"
79
79
  },
80
80
  "dependencies": {
81
- "@types/semver": "^7.3.13",
81
+ "@types/semver": "^7.5.0",
82
82
  "command-line-args": "^5.1.1",
83
- "semver": "^7.5.0",
84
- "tar": "^6.1.13"
83
+ "semver": "^7.5.3",
84
+ "tar": "^6.1.15"
85
85
  }
86
86
  }
@@ -45,10 +45,14 @@ export function getRequiredSecretInput(name: string): string {
45
45
  * Get a boolean input by name.
46
46
  *
47
47
  * @param name Input name
48
- * @returns True if value is "true", false if not
48
+ * @returns True if value is "true", false if "false", undefined if unset
49
49
  */
50
- export function getBooleanInput(name: string): boolean {
51
- return ghGetInput(name) === "true";
50
+ export function getBooleanInput(name: string): boolean | undefined {
51
+ const inputString = ghGetInput(name).toLowerCase();
52
+
53
+ if (inputString === "true") return true;
54
+ if (inputString === "false") return false;
55
+ return undefined;
52
56
  }
53
57
 
54
58
  /**
@@ -12,6 +12,7 @@ async function run(): Promise<void> {
12
12
  access: core.getInput("access"),
13
13
  provenance: core.getBooleanInput("provenance"),
14
14
  strategy: core.getInput("strategy"),
15
+ ignoreScripts: core.getBooleanInput("ignore-scripts"),
15
16
  dryRun: core.getBooleanInput("dry-run"),
16
17
  logger: core.logger,
17
18
  temporaryDirectory: process.env["RUNNER_TEMP"],
@@ -29,4 +30,11 @@ async function run(): Promise<void> {
29
30
  core.setOutput("dry-run", results.dryRun);
30
31
  }
31
32
 
32
- run().catch((error: Error) => core.setFailed(error));
33
+ /** Main action entry point. */
34
+ export async function main(): Promise<void> {
35
+ try {
36
+ await run();
37
+ } catch (error) {
38
+ core.setFailed(error);
39
+ }
40
+ }
package/src/cli/index.ts CHANGED
@@ -31,6 +31,9 @@ Options:
31
31
  --strategy <strategy> Publish strategy, may be "all" or "upgrade".
32
32
  Defaults to "all", see documentation for details.
33
33
 
34
+ --no-ignore-scripts Allow lifecycle scripts, which are disabled by default
35
+ as a security precaution. Defaults to false.
36
+
34
37
  --dry-run Do not actually publish anything.
35
38
  --quiet Only print errors.
36
39
  --debug Print debug logs.
@@ -11,6 +11,7 @@ const ARGUMENTS_OPTIONS = [
11
11
  { name: "access", type: String },
12
12
  { name: "provenance", type: Boolean },
13
13
  { name: "strategy", type: String },
14
+ { name: "no-ignore-scripts", type: Boolean },
14
15
  { name: "dry-run", type: Boolean },
15
16
  { name: "quiet", type: Boolean },
16
17
  { name: "debug", type: Boolean },
@@ -34,11 +35,19 @@ export interface ParsedArguments {
34
35
  * @returns A parsed object of options.
35
36
  */
36
37
  export function parseCliArguments(argv: string[]): ParsedArguments {
37
- const { help, version, quiet, debug, ...options } = commandLineArgs(
38
+ const { help, version, quiet, debug, ...optionFlags } = commandLineArgs(
38
39
  ARGUMENTS_OPTIONS,
39
40
  { argv, camelCase: true }
40
41
  );
41
42
 
43
+ const options = Object.fromEntries(
44
+ Object.entries(optionFlags).map(([key, value]) => {
45
+ return key === "noIgnoreScripts"
46
+ ? ["ignoreScripts", !value]
47
+ : [key, value];
48
+ })
49
+ );
50
+
42
51
  return {
43
52
  help: Boolean(help),
44
53
  version: Boolean(version),
@@ -35,7 +35,11 @@ export async function compareAndPublish(
35
35
  environment: NpmCliEnvironment
36
36
  ): Promise<PublishResult> {
37
37
  const { name, version, packageSpec } = manifest;
38
- const cliOptions = { environment, logger: options.logger };
38
+ const cliOptions = {
39
+ environment,
40
+ ignoreScripts: options.ignoreScripts.value,
41
+ logger: options.logger,
42
+ };
39
43
 
40
44
  const viewArguments = getViewArguments(name, options);
41
45
  const publishArguments = getPublishArguments(packageSpec, options);
package/src/index.ts CHANGED
@@ -3,5 +3,5 @@ export * from "./options.js";
3
3
  export * from "./results.js";
4
4
  export * from "./errors.js";
5
5
 
6
- // Export `npmPublish` as a named export and the default export
6
+ // Export `npmPublish` as a named export
7
7
  export { npmPublish } from "./npm-publish.js";
@@ -23,6 +23,7 @@ export interface NormalizedOptions {
23
23
  tag: ConfigValue<string>;
24
24
  access: ConfigValue<Access | undefined>;
25
25
  provenance: ConfigValue<boolean>;
26
+ ignoreScripts: ConfigValue<boolean>;
26
27
  dryRun: ConfigValue<boolean>;
27
28
  strategy: ConfigValue<Strategy>;
28
29
  logger: Logger | undefined;
@@ -62,6 +63,7 @@ export function normalizeOptions(
62
63
  tag: setValue(options.tag, defaultTag, validateTag),
63
64
  access: setValue(options.access, defaultAccess, validateAccess),
64
65
  provenance: setValue(options.provenance, defaultProvenance, Boolean),
66
+ ignoreScripts: setValue(options.ignoreScripts, true, Boolean),
65
67
  dryRun: setValue(options.dryRun, false, Boolean),
66
68
  strategy: setValue(options.strategy, STRATEGY_ALL, validateStrategy),
67
69
  logger: options.logger,
@@ -7,6 +7,7 @@ import type { NpmCliEnvironment } from "./use-npm-environment.js";
7
7
 
8
8
  export interface NpmCliOptions {
9
9
  environment: NpmCliEnvironment;
10
+ ignoreScripts: boolean;
10
11
  logger?: Logger | undefined;
11
12
  }
12
13
 
@@ -41,6 +42,9 @@ export const EPUBLISHCONFLICT = "EPUBLISHCONFLICT";
41
42
  const NPM = os.platform() === "win32" ? "npm.cmd" : "npm";
42
43
  const JSON_MATCH_RE = /(\{[\s\S]*\})/mu;
43
44
 
45
+ const baseArguments = (options: NpmCliOptions) =>
46
+ options.ignoreScripts ? ["--ignore-scripts", "--json"] : ["--json"];
47
+
44
48
  /**
45
49
  * Call the NPM CLI in JSON mode.
46
50
  *
@@ -55,7 +59,7 @@ export async function callNpmCli<CommandT extends Command>(
55
59
  options: NpmCliOptions
56
60
  ): Promise<NpmCallResult<CommandT>> {
57
61
  const { stdout, stderr, exitCode } = await execNpm(
58
- [command, "--ignore-scripts", "--json", ...cliArguments],
62
+ [command, ...baseArguments(options), ...cliArguments],
59
63
  options.environment,
60
64
  options.logger
61
65
  );
@@ -67,12 +71,15 @@ export async function callNpmCli<CommandT extends Command>(
67
71
  if (exitCode === 0) {
68
72
  successData = parseJson<SuccessData<CommandT>>(stdout);
69
73
  } else {
70
- const errorPayload = parseJson<{ error?: { code?: string | null } }>(
74
+ const errorPayload = parseJson<{ error?: { code?: unknown } }>(
71
75
  stdout,
72
76
  stderr
73
77
  );
74
78
 
75
- errorCode = errorPayload?.error?.code?.toUpperCase();
79
+ if (errorPayload?.error?.code) {
80
+ errorCode = String(errorPayload.error.code).toUpperCase();
81
+ }
82
+
76
83
  error = new errors.NpmCallError(command, exitCode, stderr);
77
84
  }
78
85
 
@@ -105,6 +112,9 @@ async function execNpm(
105
112
  npm.stdout.on("data", (data) => (stdout += data));
106
113
  npm.stderr.on("data", (data) => (stderr += data));
107
114
  npm.on("close", (code) => {
115
+ logger?.debug?.(`Received stdout: ${stdout}`);
116
+ logger?.debug?.(`Received stderr: ${stderr}`);
117
+
108
118
  resolve({
109
119
  stdout: stdout.trim(),
110
120
  stderr: stderr.trim(),
package/src/options.ts CHANGED
@@ -60,7 +60,7 @@ export interface Options {
60
60
  * packages.
61
61
  *
62
62
  * Defaults to "restricted" for scoped packages, unless that package has been
63
- * previously published as `public`
63
+ * previously published as `public`.
64
64
  *
65
65
  * Can be set by the package.json's `publishConfig` field.
66
66
  */
@@ -81,14 +81,23 @@ export interface Options {
81
81
  /**
82
82
  * Version check strategy.
83
83
  *
84
- * If "upgrade" (default), the package will only be published if its version
85
- * is higher than the existing version on the configured tag. If "always", the
86
- * package will be published if its version is simply not yet published.
87
- *
88
- * Defaults to `upgrade`.
84
+ * - `always` (default): the package will be published if its version is simply
85
+ * not yet published.
86
+ * - `upgrade`: the package will only be published if its version is higher than
87
+ * the existing version on the configured tag.
89
88
  */
90
89
  strategy?: Strategy | undefined;
91
90
 
91
+ /**
92
+ * Ignore lifecycle scripts.
93
+ *
94
+ * If `true` (default), `--ignore-scripts` will be passed to `npm`. If you
95
+ * rely on publish lifecycle scripts - i.e. `prepublishOnly`, `prepack`,
96
+ * `prepare`, `postpack`, `publish`, `postpublish` - you should set this to
97
+ * `false` or rework your build and publish workflow.
98
+ */
99
+ ignoreScripts?: boolean | undefined;
100
+
92
101
  /**
93
102
  * Pretend to publish, but don't actually upload to the registry.
94
103
  *