Specify registry url only if local publish attempted
This commit is contained in:
@@ -4,11 +4,9 @@
|
|||||||
"version": "independent",
|
"version": "independent",
|
||||||
"command": {
|
"command": {
|
||||||
"publish": {
|
"publish": {
|
||||||
"registry": "http://localhost:4873/",
|
|
||||||
"ignoreChanges": ["test/**/*", "*.md", "scripts", "lib", "tslint.json", "tsconfig.json"]
|
"ignoreChanges": ["test/**/*", "*.md", "scripts", "lib", "tslint.json", "tsconfig.json"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"useWorkspaces": true,
|
"useWorkspaces": true
|
||||||
"registry": "http://localhost:4873"
|
|
||||||
}
|
}
|
||||||
|
@@ -14,10 +14,9 @@
|
|||||||
"report_coverage": "lcov-result-merger 'packages/*/coverage/lcov.info' | coveralls",
|
"report_coverage": "lcov-result-merger 'packages/*/coverage/lcov.info' | coveralls",
|
||||||
"test:installation": "node ./packages/monorepo-scripts/lib/test_installation.js",
|
"test:installation": "node ./packages/monorepo-scripts/lib/test_installation.js",
|
||||||
"run:publish": "run-s install:all build:monorepo_scripts script:prepublish_checks script:publish",
|
"run:publish": "run-s install:all build:monorepo_scripts script:prepublish_checks script:publish",
|
||||||
"run:publish:local": "run-s install:all build:monorepo_scripts script:prepublish_checks script:publish:local",
|
"run:publish:local": "IS_LOCAL_PUBLISH=true yarn run:publish",
|
||||||
"script:prepublish_checks": "node ./packages/monorepo-scripts/lib/prepublish_checks.js",
|
"script:prepublish_checks": "node ./packages/monorepo-scripts/lib/prepublish_checks.js",
|
||||||
"script:publish": "node ./packages/monorepo-scripts/lib/publish.js",
|
"script:publish": "node ./packages/monorepo-scripts/lib/publish.js",
|
||||||
"script:publish:local": "IS_LOCAL_PUBLISH=true yarn script:publish",
|
|
||||||
"install:all": "yarn install",
|
"install:all": "yarn install",
|
||||||
"wsrun": "wsrun",
|
"wsrun": "wsrun",
|
||||||
"lerna:run": "lerna run",
|
"lerna:run": "lerna run",
|
||||||
|
@@ -6,6 +6,7 @@ import * as path from 'path';
|
|||||||
import * as publishRelease from 'publish-release';
|
import * as publishRelease from 'publish-release';
|
||||||
|
|
||||||
import { constants } from './constants';
|
import { constants } from './constants';
|
||||||
|
import { configs } from './utils/configs';
|
||||||
import { utils } from './utils/utils';
|
import { utils } from './utils/utils';
|
||||||
|
|
||||||
const publishReleaseAsync = promisify(publishRelease);
|
const publishReleaseAsync = promisify(publishRelease);
|
||||||
@@ -25,8 +26,6 @@ export interface DocPublishConfigs {
|
|||||||
s3StagingBucketPath: string;
|
s3StagingBucketPath: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const IS_LOCAL_PUBLISH = process.env.IS_LOCAL_PUBLISH === 'true';
|
|
||||||
|
|
||||||
export const postpublishUtils = {
|
export const postpublishUtils = {
|
||||||
generateConfig(packageJSON: any, tsConfigJSON: any, cwd: string): PostpublishConfigs {
|
generateConfig(packageJSON: any, tsConfigJSON: any, cwd: string): PostpublishConfigs {
|
||||||
if (_.isUndefined(packageJSON.name)) {
|
if (_.isUndefined(packageJSON.name)) {
|
||||||
@@ -36,7 +35,7 @@ export const postpublishUtils = {
|
|||||||
throw new Error('version field required in package.json. Cannot publish release notes to Github.');
|
throw new Error('version field required in package.json. Cannot publish release notes to Github.');
|
||||||
}
|
}
|
||||||
const postpublishConfig = _.get(packageJSON, 'config.postpublish', {});
|
const postpublishConfig = _.get(packageJSON, 'config.postpublish', {});
|
||||||
const configs: PostpublishConfigs = {
|
const postpublishConfigs: PostpublishConfigs = {
|
||||||
cwd,
|
cwd,
|
||||||
packageName: packageJSON.name,
|
packageName: packageJSON.name,
|
||||||
version: packageJSON.version,
|
version: packageJSON.version,
|
||||||
@@ -50,47 +49,47 @@ export const postpublishUtils = {
|
|||||||
s3StagingBucketPath: _.get(postpublishConfig, 'docPublishConfigs.s3StagingBucketPath'),
|
s3StagingBucketPath: _.get(postpublishConfig, 'docPublishConfigs.s3StagingBucketPath'),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
return configs;
|
return postpublishConfigs;
|
||||||
},
|
},
|
||||||
async runAsync(packageJSON: any, tsConfigJSON: any, cwd: string): Promise<void> {
|
async runAsync(packageJSON: any, tsConfigJSON: any, cwd: string): Promise<void> {
|
||||||
if (IS_LOCAL_PUBLISH) {
|
if (configs.IS_LOCAL_PUBLISH) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const configs = postpublishUtils.generateConfig(packageJSON, tsConfigJSON, cwd);
|
const postpublishConfigs = postpublishUtils.generateConfig(packageJSON, tsConfigJSON, cwd);
|
||||||
await postpublishUtils.publishReleaseNotesAsync(
|
await postpublishUtils.publishReleaseNotesAsync(
|
||||||
configs.cwd,
|
postpublishConfigs.cwd,
|
||||||
configs.packageName,
|
postpublishConfigs.packageName,
|
||||||
configs.version,
|
postpublishConfigs.version,
|
||||||
configs.assets,
|
postpublishConfigs.assets,
|
||||||
);
|
);
|
||||||
if (
|
if (
|
||||||
!_.isUndefined(configs.docPublishConfigs.s3BucketPath) ||
|
!_.isUndefined(postpublishConfigs.docPublishConfigs.s3BucketPath) ||
|
||||||
!_.isUndefined(configs.docPublishConfigs.s3StagingBucketPath)
|
!_.isUndefined(postpublishConfigs.docPublishConfigs.s3StagingBucketPath)
|
||||||
) {
|
) {
|
||||||
utils.log('POSTPUBLISH: Release successful, generating docs...');
|
utils.log('POSTPUBLISH: Release successful, generating docs...');
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(
|
await postpublishUtils.generateAndUploadDocsAsync(
|
||||||
configs.cwd,
|
postpublishConfigs.cwd,
|
||||||
configs.docPublishConfigs.fileIncludes,
|
postpublishConfigs.docPublishConfigs.fileIncludes,
|
||||||
configs.version,
|
postpublishConfigs.version,
|
||||||
configs.docPublishConfigs.s3BucketPath,
|
postpublishConfigs.docPublishConfigs.s3BucketPath,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
utils.log(`POSTPUBLISH: No S3Bucket config found for ${packageJSON.name}. Skipping doc JSON generation.`);
|
utils.log(`POSTPUBLISH: No S3Bucket config found for ${packageJSON.name}. Skipping doc JSON generation.`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async publishDocsToStagingAsync(packageJSON: any, tsConfigJSON: any, cwd: string): Promise<void> {
|
async publishDocsToStagingAsync(packageJSON: any, tsConfigJSON: any, cwd: string): Promise<void> {
|
||||||
const configs = postpublishUtils.generateConfig(packageJSON, tsConfigJSON, cwd);
|
const postpublishConfigs = postpublishUtils.generateConfig(packageJSON, tsConfigJSON, cwd);
|
||||||
if (_.isUndefined(configs.docPublishConfigs.s3StagingBucketPath)) {
|
if (_.isUndefined(postpublishConfigs.docPublishConfigs.s3StagingBucketPath)) {
|
||||||
utils.log('config.postpublish.docPublishConfigs.s3StagingBucketPath entry in package.json not found!');
|
utils.log('config.postpublish.docPublishConfigs.s3StagingBucketPath entry in package.json not found!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.log('POSTPUBLISH: Generating docs...');
|
utils.log('POSTPUBLISH: Generating docs...');
|
||||||
await postpublishUtils.generateAndUploadDocsAsync(
|
await postpublishUtils.generateAndUploadDocsAsync(
|
||||||
configs.cwd,
|
postpublishConfigs.cwd,
|
||||||
configs.docPublishConfigs.fileIncludes,
|
postpublishConfigs.docPublishConfigs.fileIncludes,
|
||||||
configs.version,
|
postpublishConfigs.version,
|
||||||
configs.docPublishConfigs.s3StagingBucketPath,
|
postpublishConfigs.docPublishConfigs.s3StagingBucketPath,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
async publishReleaseNotesAsync(cwd: string, packageName: string, version: string, assets: string[]): Promise<void> {
|
async publishReleaseNotesAsync(cwd: string, packageName: string, version: string, assets: string[]): Promise<void> {
|
||||||
|
@@ -12,11 +12,11 @@ import semverSort = require('semver-sort');
|
|||||||
import { constants } from './constants';
|
import { constants } from './constants';
|
||||||
import { Package, PackageToNextVersion, VersionChangelog } from './types';
|
import { Package, PackageToNextVersion, VersionChangelog } from './types';
|
||||||
import { changelogUtils } from './utils/changelog_utils';
|
import { changelogUtils } from './utils/changelog_utils';
|
||||||
|
import { configs } from './utils/configs';
|
||||||
import { utils } from './utils/utils';
|
import { utils } from './utils/utils';
|
||||||
|
|
||||||
const DOC_GEN_COMMAND = 'docs:json';
|
const DOC_GEN_COMMAND = 'docs:json';
|
||||||
const NPM_NAMESPACE = '@0xproject/';
|
const NPM_NAMESPACE = '@0xproject/';
|
||||||
const IS_LOCAL_PUBLISH = process.env.IS_LOCAL_PUBLISH === 'true';
|
|
||||||
const TODAYS_TIMESTAMP = moment().unix();
|
const TODAYS_TIMESTAMP = moment().unix();
|
||||||
const packageNameToWebsitePath: { [name: string]: string } = {
|
const packageNameToWebsitePath: { [name: string]: string } = {
|
||||||
'0x.js': '0xjs',
|
'0x.js': '0xjs',
|
||||||
@@ -36,7 +36,7 @@ const packageNameToWebsitePath: { [name: string]: string } = {
|
|||||||
const shouldIncludePrivate = true;
|
const shouldIncludePrivate = true;
|
||||||
const allUpdatedPackages = await utils.getUpdatedPackagesAsync(shouldIncludePrivate);
|
const allUpdatedPackages = await utils.getUpdatedPackagesAsync(shouldIncludePrivate);
|
||||||
|
|
||||||
if (!IS_LOCAL_PUBLISH) {
|
if (!configs.IS_LOCAL_PUBLISH) {
|
||||||
await confirmDocPagesRenderAsync(allUpdatedPackages);
|
await confirmDocPagesRenderAsync(allUpdatedPackages);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ const packageNameToWebsitePath: { [name: string]: string } = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Push changelog changes to Github
|
// Push changelog changes to Github
|
||||||
if (!IS_LOCAL_PUBLISH) {
|
if (!configs.IS_LOCAL_PUBLISH) {
|
||||||
await pushChangelogsToGithubAsync();
|
await pushChangelogsToGithubAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,9 +182,11 @@ async function lernaPublishAsync(packageToNextVersion: { [name: string]: string
|
|||||||
const packageVersionString = _.map(packageToNextVersion, (nextVersion: string, packageName: string) => {
|
const packageVersionString = _.map(packageToNextVersion, (nextVersion: string, packageName: string) => {
|
||||||
return `${packageName}@${nextVersion}`;
|
return `${packageName}@${nextVersion}`;
|
||||||
}).join(',');
|
}).join(',');
|
||||||
let lernaPublishCmd = `node ${constants.lernaExecutable} publish --cdVersions=${packageVersionString}`;
|
let lernaPublishCmd = `node ${constants.lernaExecutable} publish --cdVersions=${packageVersionString} --registry=${
|
||||||
if (IS_LOCAL_PUBLISH) {
|
configs.NPM_REGISTRY_URL
|
||||||
lernaPublishCmd += ' --skip-git --yes --force-publish *';
|
}`;
|
||||||
|
if (configs.IS_LOCAL_PUBLISH) {
|
||||||
|
lernaPublishCmd += ` --skip-git --yes --force-publish *`;
|
||||||
}
|
}
|
||||||
utils.log('Lerna is publishing...');
|
utils.log('Lerna is publishing...');
|
||||||
await execAsync(lernaPublishCmd, { cwd: constants.monorepoRootPath });
|
await execAsync(lernaPublishCmd, { cwd: constants.monorepoRootPath });
|
||||||
|
8
packages/monorepo-scripts/src/utils/configs.ts
Normal file
8
packages/monorepo-scripts/src/utils/configs.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
const IS_LOCAL_PUBLISH = process.env.IS_LOCAL_PUBLISH === 'true';
|
||||||
|
const LOCAL_NPM_REGISTRY_URL = 'http://localhost:4873';
|
||||||
|
const REMOTE_NPM_REGISTRY_URL = 'https://registry.npmjs.org';
|
||||||
|
|
||||||
|
export const configs = {
|
||||||
|
IS_LOCAL_PUBLISH,
|
||||||
|
NPM_REGISTRY_URL: IS_LOCAL_PUBLISH ? LOCAL_NPM_REGISTRY_URL : REMOTE_NPM_REGISTRY_URL,
|
||||||
|
};
|
@@ -4,14 +4,14 @@ import * as _ from 'lodash';
|
|||||||
|
|
||||||
import { PackageRegistryJson } from '../types';
|
import { PackageRegistryJson } from '../types';
|
||||||
|
|
||||||
const lernaJson = JSON.parse(fs.readFileSync('lerna.json').toString());
|
import { configs } from './configs';
|
||||||
const NPM_REGISTRY_BASE_URL = lernaJson.registry;
|
|
||||||
const SUCCESS_STATUS = 200;
|
const SUCCESS_STATUS = 200;
|
||||||
const NOT_FOUND_STATUS = 404;
|
const NOT_FOUND_STATUS = 404;
|
||||||
|
|
||||||
export const npmUtils = {
|
export const npmUtils = {
|
||||||
async getPackageRegistryJsonIfExistsAsync(packageName: string): Promise<PackageRegistryJson | undefined> {
|
async getPackageRegistryJsonIfExistsAsync(packageName: string): Promise<PackageRegistryJson | undefined> {
|
||||||
const url = `${NPM_REGISTRY_BASE_URL}/${packageName}`;
|
const url = `${configs.NPM_REGISTRY_URL}/${packageName}`;
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
|
|
||||||
if (response.status === NOT_FOUND_STATUS) {
|
if (response.status === NOT_FOUND_STATUS) {
|
||||||
|
Reference in New Issue
Block a user