Skip to content

Commit bfb712b

Browse files
don't set token for private single npm packages
1 parent 40c9e6c commit bfb712b

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

plugins/npm/__tests__/set-npm-token.test.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as utils from "../src/utils";
77
const loadPackageJson = utils.loadPackageJson as jest.Mock;
88
const readFile = utils.readFile as jest.Mock;
99
const writeFile = utils.writeFile as jest.Mock;
10+
const isMonorepo = utils.isMonorepo as jest.Mock;
1011

1112
jest.mock("../src/utils.ts");
1213
jest.mock("env-ci", () => () => ({
@@ -31,6 +32,23 @@ describe("set npm token", () => {
3132
);
3233
});
3334

35+
test("should not write a new npmrc for single private package", async () => {
36+
loadPackageJson.mockReturnValueOnce({ name: "test", private: true });
37+
isMonorepo.mockReturnValueOnce(false);
38+
39+
await setNpmToken(dummyLog());
40+
expect(writeFile).not.toHaveBeenCalled()
41+
});
42+
43+
44+
test("should write a npmrc for monorepo", async () => {
45+
loadPackageJson.mockReturnValueOnce({ name: "test", private: true });
46+
isMonorepo.mockReturnValueOnce(true);
47+
48+
await setNpmToken(dummyLog());
49+
expect(writeFile).toHaveBeenCalled()
50+
});
51+
3452
test("should write a new npmrc w/o name", async () => {
3553
loadPackageJson.mockReturnValueOnce({});
3654
await setNpmToken(dummyLog());
@@ -52,7 +70,7 @@ describe("set npm token", () => {
5270
);
5371
});
5472

55-
test("should use registry for scoped pacakged", async () => {
73+
test("should use registry for scoped packaged", async () => {
5674
loadPackageJson.mockReturnValueOnce({
5775
name: "@scope/test",
5876
});

plugins/npm/src/index.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,11 @@ import { gt, gte, inc, ReleaseType } from "semver";
2626

2727
import getConfigFromPackageJson from "./package-config";
2828
import setTokenOnCI from "./set-npm-token";
29-
import { loadPackageJson, writeFile } from "./utils";
29+
import { loadPackageJson, writeFile, isMonorepo } from "./utils";
3030

3131
const { isCi } = envCi();
3232
const VERSION_COMMIT_MESSAGE = '"Bump version to: %s [skip ci]"';
3333

34-
/** Check if the project is a monorepo */
35-
const isMonorepo = () => fs.existsSync("lerna.json");
36-
3734
/** Get the last published version for a npm package */
3835
async function getPublishedVersion(name: string) {
3936
try {

plugins/npm/src/set-npm-token.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import registryUrl from "registry-url";
55
import urlJoin from "url-join";
66
import userHome from "user-home";
77

8-
import { loadPackageJson, readFile, writeFile } from "./utils";
8+
import { loadPackageJson, readFile, writeFile, isMonorepo } from "./utils";
99

1010
const { isCi } = envCi();
1111

@@ -15,7 +15,13 @@ export default async function setTokenOnCI(logger: ILogger) {
1515
return;
1616
}
1717

18-
const { publishConfig = {}, name } = await loadPackageJson();
18+
const { publishConfig = {}, name, private: isPrivate } = await loadPackageJson();
19+
20+
if (isPrivate && !isMonorepo()) {
21+
logger.verbose.info('NPM token not set for private package.')
22+
return;
23+
}
24+
1925
const rc = path.join(userHome, ".npmrc");
2026
let contents = "";
2127

plugins/npm/src/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ export const writeFile = promisify(fs.writeFile);
99
export async function loadPackageJson(root = "./"): Promise<IPackageJSON> {
1010
return JSON.parse(await readFile(path.join(root, "package.json"), "utf-8"));
1111
}
12+
13+
/** Check if the project is a monorepo */
14+
export const isMonorepo = () => fs.existsSync("lerna.json");

0 commit comments

Comments
 (0)