diff --git a/source/npm/util.js b/source/npm/util.js index fbc5102e..7ccec97c 100644 --- a/source/npm/util.js +++ b/source/npm/util.js @@ -1,8 +1,12 @@ 'use strict'; +const {existsSync} = require('fs'); +const {resolve} = require('path'); const execa = require('execa'); const pTimeout = require('p-timeout'); const ow = require('ow'); const npmName = require('npm-name'); +const chalk = require('chalk'); +const pkgDir = require('pkg-dir'); const {verifyRequirementSatisfied} = require('../version'); exports.checkConnection = () => pTimeout( @@ -87,3 +91,14 @@ exports.verifyRecentNpmVersion = async () => { const npmVersion = await exports.version(); verifyRequirementSatisfied('npm', npmVersion); }; + +exports.checkIgnoreStrategy = ({files}) => { + const rootDir = pkgDir.sync(); + const npmignoreExists = existsSync(resolve(rootDir, '.npmignore')); + + if (!files && !npmignoreExists) { + console.log(` + \n${chalk.bold.yellow('Warning:')} No ${chalk.bold.cyan('files')} field specified in ${chalk.bold.magenta('package.json')} nor ${chalk.bold.magenta('.npmignore')} file present. Setting one of those will prevent you from accidentally publishing development-specific files along with your package's source code to npm. + `); + } +}; diff --git a/source/ui.js b/source/ui.js index 26ef5524..b29377ad 100644 --- a/source/ui.js +++ b/source/ui.js @@ -5,7 +5,7 @@ const githubUrlFromGit = require('github-url-from-git'); const isScoped = require('is-scoped'); const util = require('./util'); const git = require('./git-util'); -const {prereleaseTags} = require('./npm/util'); +const {prereleaseTags, checkIgnoreStrategy} = require('./npm/util'); const version = require('./version'); const prettyVersionDiff = require('./pretty-version-diff'); @@ -54,6 +54,8 @@ module.exports = async (options, pkg) => { const extraBaseUrls = ['gitlab.com']; const repoUrl = pkg.repository && githubUrlFromGit(pkg.repository.url, {extraBaseUrls}); + checkIgnoreStrategy(pkg); + console.log(`\nPublish a new version of ${chalk.bold.magenta(pkg.name)} ${chalk.dim(`(current: ${oldVersion})`)}\n`); const prompts = [