feat: supporting prepare event

Print deprecation notice when `prepublish` is present.
Run `prepublish` as well for now.

Close #810
This commit is contained in:
zkochan
2017-06-18 19:55:21 +03:00
parent 3822f9d94b
commit 85778cd5e2
2 changed files with 14 additions and 6 deletions

View File

@@ -114,6 +114,11 @@ export async function install (maybeOpts?: PnpmOptions) {
async function run () {
const scripts = !opts.ignoreScripts && ctx.pkg && ctx.pkg.scripts || {}
if (scripts['prepublish']) {
logger.warn('`prepublish` scripts are deprecated. Use `prepare` for build steps and `prepublishOnly` for upload-only.')
}
if (scripts['preinstall']) {
npmRun('preinstall', ctx.root, opts.userAgent)
}
@@ -126,6 +131,9 @@ export async function install (maybeOpts?: PnpmOptions) {
if (scripts['prepublish']) {
npmRun('prepublish', ctx.root, opts.userAgent)
}
if (scripts['prepare']) {
npmRun('prepare', ctx.root, opts.userAgent)
}
}
}, {stale: opts.lockStaleDuration})
}

View File

@@ -124,32 +124,32 @@ test('postinstall is not executed after named installation', t => {
t.end()
})
test('prepublish is not executed after installation with arguments', t => {
test('prepare is not executed after installation with arguments', t => {
const project = prepare(t, {
scripts: {
prepublish: 'echo "Hello world!"'
prepare: 'echo "Hello world!"'
}
})
const result = execPnpmSync('install', 'is-negative')
t.equal(result.status, 0, 'installation was successfull')
t.ok(result.stdout.toString().indexOf('Hello world!') === -1, 'prepublish script was not executed')
t.ok(result.stdout.toString().indexOf('Hello world!') === -1, 'prepare script was not executed')
t.end()
})
test('prepublish is executed after argumentless installation', t => {
test('prepare is executed after argumentless installation', t => {
const project = prepare(t, {
scripts: {
prepublish: 'echo "Hello world!"'
prepare: 'echo "Hello world!"'
}
})
const result = execPnpmSync('install')
t.equal(result.status, 0, 'installation was successfull')
t.ok(result.stdout.toString().indexOf('Hello world!') !== -1, 'prepublish script was executed')
t.ok(result.stdout.toString().indexOf('Hello world!') !== -1, 'prepare script was executed')
t.end()
})