Skip to content
This repository was archived by the owner on May 10, 2021. It is now read-only.

Commit 8c11b6d

Browse files
cruzdaniloisaacs
authored andcommittedSep 24, 2019
respect no-optional argument
PR-URL: #2 Credit: @cruzdanilo Close: #2 Reviewed-by: @isaacs
1 parent 3fa8efb commit 8c11b6d

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed
 

‎index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,10 @@ class Installer {
244244
/^dev(elopment)?$/.test(this.opts.also)
245245
)
246246
const includeProd = !/^dev(elopment)?$/.test(this.opts.only)
247-
return (dep.dev && includeDev) || (!dep.dev && includeProd)
247+
const includeOptional = includeProd && this.opts.optional
248+
return (dep.dev && includeDev) ||
249+
(dep.optional && includeOptional) ||
250+
(!dep.dev && !dep.optional && includeProd)
248251
}
249252

250253
updateJson (tree) {

‎test/specs/index.js

+37
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,43 @@ test('removes failed optional dependencies', t => {
532532
})
533533
})
534534

535+
test('don\'t install optional dependencies with no-optional argument', t => {
536+
const fixture = new Tacks(Dir({
537+
'package.json': File({
538+
name: pkgName,
539+
version: pkgVersion,
540+
dependencies: { a: '^1' },
541+
optionalDependencies: { b: '^1' }
542+
}),
543+
'package-lock.json': File({
544+
lockfileVersion: 1,
545+
dependencies: {
546+
a: { version: '1.0.0' },
547+
b: { version: '1.0.0', optional: true }
548+
}
549+
})
550+
}))
551+
fixture.create(prefix)
552+
553+
extract = (name, child, childPath, opts) => {
554+
const files = new Tacks(Dir({
555+
'package.json': File({
556+
name,
557+
version: '1.0.0'
558+
})
559+
}))
560+
files.create(childPath)
561+
}
562+
563+
return run({ optional: false }).then(details => {
564+
t.equal(details.pkgCount, 1, 'only prod deps counted')
565+
t.ok(fs.statSync(path.join(prefix, 'node_modules', 'a')), 'dep a is there')
566+
t.throws(() => {
567+
fs.statSync(path.join(prefix, 'node_modules', 'b'))
568+
}, 'optional dep b is not there')
569+
})
570+
})
571+
535572
test('runs lifecycle hooks of packages with env variables', t => {
536573
const originalConsoleLog = console.log
537574
console.log = () => {}

0 commit comments

Comments
 (0)
This repository has been archived.