Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b519201
commit 0cff2b4
Showing
4 changed files
with
160 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
#!/usr/bin/env node | ||
'use strict'; | ||
// eslint-disable-next-line import/no-unassigned-import | ||
require('symbol-observable'); // Important: This needs to be first to prevent weird Observable incompatibilities | ||
const logSymbols = require('log-symbols'); | ||
const meow = require('meow'); | ||
const updateNotifier = require('update-notifier'); | ||
const hasYarn = require('has-yarn'); | ||
const config = require('./config'); | ||
const {isPackageNameAvailable} = require('./npm/util'); | ||
const version = require('./version'); | ||
const util = require('./util'); | ||
const ui = require('./ui'); | ||
const np = require('.'); | ||
|
||
const cli = meow(` | ||
Usage | ||
$ np <version> | ||
Version can be: | ||
${version.SEMVER_INCREMENTS.join(' | ')} | 1.2.3 | ||
Options | ||
--any-branch Allow publishing from any branch | ||
--branch Name of the release branch (default: master) | ||
--no-cleanup Skips cleanup of node_modules | ||
--no-tests Skips tests | ||
--yolo Skips cleanup and testing | ||
--no-publish Skips publishing | ||
--preview Show tasks without actually executing them | ||
--tag Publish under a given dist-tag | ||
--no-yarn Don't use Yarn | ||
--contents Subdirectory to publish | ||
--no-release-draft Skips opening a GitHub release draft | ||
--test-script Name of npm run script to run tests before publishing (default: test) | ||
--no-2fa Don't enable 2FA on new packages (not recommended) | ||
Examples | ||
$ np | ||
$ np patch | ||
$ np 1.0.2 | ||
$ np 1.0.2-beta.3 --tag=beta | ||
$ np 1.0.2-beta.3 --tag=beta --contents=dist | ||
`, { | ||
booleanDefault: undefined, | ||
flags: { | ||
anyBranch: { | ||
type: 'boolean' | ||
}, | ||
branch: { | ||
type: 'string' | ||
}, | ||
cleanup: { | ||
type: 'boolean' | ||
}, | ||
tests: { | ||
type: 'boolean' | ||
}, | ||
yolo: { | ||
type: 'boolean' | ||
}, | ||
publish: { | ||
type: 'boolean' | ||
}, | ||
releaseDraft: { | ||
type: 'boolean' | ||
}, | ||
tag: { | ||
type: 'string' | ||
}, | ||
yarn: { | ||
type: 'boolean' | ||
}, | ||
contents: { | ||
type: 'string' | ||
}, | ||
preview: { | ||
type: 'boolean' | ||
}, | ||
testScript: { | ||
type: 'string' | ||
}, | ||
'2fa': { | ||
type: 'boolean' | ||
} | ||
} | ||
}); | ||
|
||
updateNotifier({pkg: cli.pkg}).notify(); | ||
|
||
(async () => { | ||
const pkg = util.readPkg(); | ||
|
||
const defaultFlags = { | ||
cleanup: true, | ||
tests: true, | ||
publish: true, | ||
releaseDraft: true, | ||
yarn: hasYarn(), | ||
'2fa': true | ||
}; | ||
|
||
const localConfig = await config(); | ||
|
||
const flags = { | ||
...defaultFlags, | ||
...localConfig, | ||
...cli.flags | ||
}; | ||
|
||
// Workaround for unintended auto-casing behavior from `meow`. | ||
if ('2Fa' in flags) { | ||
flags['2fa'] = flags['2Fa']; | ||
} | ||
|
||
const runPublish = flags.publish && !pkg.private; | ||
|
||
const availability = flags.publish ? await isPackageNameAvailable(pkg) : { | ||
isAvailable: false, | ||
isUnknown: false | ||
}; | ||
|
||
const version = cli.input.length > 0 ? cli.input[0] : false; | ||
|
||
const options = await ui({ | ||
...flags, | ||
availability, | ||
version, | ||
runPublish | ||
}, pkg); | ||
|
||
if (!options.confirm) { | ||
process.exit(0); | ||
} | ||
|
||
console.log(); // Prints a newline for readability | ||
const newPkg = await np(options.version, options); | ||
|
||
if (options.preview) { | ||
return; | ||
} | ||
|
||
console.log(`\n ${newPkg.name} ${newPkg.version} published 🎉`); | ||
})().catch(error => { | ||
console.error(`\n${logSymbols.error} ${error.message}`); | ||
process.exit(1); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,147 +1,17 @@ | ||
#!/usr/bin/env node | ||
'use strict'; | ||
// eslint-disable-next-line import/no-unassigned-import | ||
require('symbol-observable'); // Important: This needs to be first to prevent weird Observable incompatibilities | ||
const logSymbols = require('log-symbols'); | ||
const meow = require('meow'); | ||
const updateNotifier = require('update-notifier'); | ||
const hasYarn = require('has-yarn'); | ||
const config = require('./config'); | ||
const {isPackageNameAvailable} = require('./npm/util'); | ||
const version = require('./version'); | ||
const util = require('./util'); | ||
const ui = require('./ui'); | ||
const np = require('.'); | ||
const util = require('util'); | ||
const importLocal = require('import-local'); | ||
const isInstalledGlobally = require('is-installed-globally'); | ||
|
||
const cli = meow(` | ||
Usage | ||
$ np <version> | ||
const debuglog = util.debuglog('np'); | ||
|
||
Version can be: | ||
${version.SEMVER_INCREMENTS.join(' | ')} | 1.2.3 | ||
Options | ||
--any-branch Allow publishing from any branch | ||
--branch Name of the release branch (default: master) | ||
--no-cleanup Skips cleanup of node_modules | ||
--no-tests Skips tests | ||
--yolo Skips cleanup and testing | ||
--no-publish Skips publishing | ||
--preview Show tasks without actually executing them | ||
--tag Publish under a given dist-tag | ||
--no-yarn Don't use Yarn | ||
--contents Subdirectory to publish | ||
--no-release-draft Skips opening a GitHub release draft | ||
--test-script Name of npm run script to run tests before publishing (default: test) | ||
--no-2fa Don't enable 2FA on new packages (not recommended) | ||
Examples | ||
$ np | ||
$ np patch | ||
$ np 1.0.2 | ||
$ np 1.0.2-beta.3 --tag=beta | ||
$ np 1.0.2-beta.3 --tag=beta --contents=dist | ||
`, { | ||
booleanDefault: undefined, | ||
flags: { | ||
anyBranch: { | ||
type: 'boolean' | ||
}, | ||
branch: { | ||
type: 'string' | ||
}, | ||
cleanup: { | ||
type: 'boolean' | ||
}, | ||
tests: { | ||
type: 'boolean' | ||
}, | ||
yolo: { | ||
type: 'boolean' | ||
}, | ||
publish: { | ||
type: 'boolean' | ||
}, | ||
releaseDraft: { | ||
type: 'boolean' | ||
}, | ||
tag: { | ||
type: 'string' | ||
}, | ||
yarn: { | ||
type: 'boolean' | ||
}, | ||
contents: { | ||
type: 'string' | ||
}, | ||
preview: { | ||
type: 'boolean' | ||
}, | ||
testScript: { | ||
type: 'string' | ||
}, | ||
'2fa': { | ||
type: 'boolean' | ||
} | ||
} | ||
}); | ||
|
||
updateNotifier({pkg: cli.pkg}).notify(); | ||
|
||
(async () => { | ||
const pkg = util.readPkg(); | ||
|
||
const defaultFlags = { | ||
cleanup: true, | ||
tests: true, | ||
publish: true, | ||
releaseDraft: true, | ||
yarn: hasYarn(), | ||
'2fa': true | ||
}; | ||
|
||
const localConfig = await config(); | ||
|
||
const flags = { | ||
...defaultFlags, | ||
...localConfig, | ||
...cli.flags | ||
}; | ||
|
||
// Workaround for unintended auto-casing behavior from `meow`. | ||
if ('2Fa' in flags) { | ||
flags['2fa'] = flags['2Fa']; | ||
} | ||
|
||
const runPublish = flags.publish && !pkg.private; | ||
|
||
const availability = flags.publish ? await isPackageNameAvailable(pkg) : { | ||
isAvailable: false, | ||
isUnknown: false | ||
}; | ||
|
||
const version = cli.input.length > 0 ? cli.input[0] : false; | ||
|
||
const options = await ui({ | ||
...flags, | ||
availability, | ||
version, | ||
runPublish | ||
}, pkg); | ||
|
||
if (!options.confirm) { | ||
process.exit(0); | ||
} | ||
|
||
console.log(); // Prints a newline for readability | ||
const newPkg = await np(options.version, options); | ||
|
||
if (options.preview) { | ||
return; | ||
// Prefer the local installation | ||
if (!importLocal(__filename)) { | ||
if (isInstalledGlobally) { | ||
debuglog('Using global install of np.'); | ||
} | ||
|
||
console.log(`\n ${newPkg.name} ${newPkg.version} published 🎉`); | ||
})().catch(error => { | ||
console.error(`\n${logSymbols.error} ${error.message}`); | ||
process.exit(1); | ||
}); | ||
// eslint-disable-next-line import/no-unassigned-import | ||
require('./cli-implementation'); | ||
} |