diff --git a/commands/dev.js b/commands/dev.js index d32ab36..84e45cc 100644 --- a/commands/dev.js +++ b/commands/dev.js @@ -8,6 +8,7 @@ const ora = require('ora'); const chalk = require('chalk'); const lint = require('../lib/lint'); const linkBin = require('../lib/link-bin'); +const unlinkBin = require('../lib/unlink-bin'); const formatError = require('../lib/format-error'); const states = require('../lib/states'); const Pastel = require('..'); @@ -18,6 +19,10 @@ module.exports = async () => { lint(projectPath, pkg); + ['exit', 'SIGINT', 'SIGTERM'].forEach(event => + process.on(event, () => unlinkBin(projectPath)) + ); + console.log(wrapAnsi(stripIndent(` ${chalk.bold('Development mode')} diff --git a/lib/unlink-bin.js b/lib/unlink-bin.js new file mode 100644 index 0000000..d956e6d --- /dev/null +++ b/lib/unlink-bin.js @@ -0,0 +1,9 @@ +'use strict'; +const hasYarn = require('has-yarn'); +const execa = require('execa'); + +module.exports = projectPath => { + const bin = hasYarn(projectPath) ? 'yarn' : 'npm'; + + return execa(bin, ['unlink']); +};