1var fs = require('graceful-fs') 2var path = require('path') 3var existsSync = fs.existsSync || path.existsSync 4 5var mkdirp = require('mkdirp') 6var rimraf = require('rimraf') 7const t = require('tap') 8 9var common = require('../common-tap.js') 10 11var pkg = common.pkg 12 13var EXEC_OPTS = { cwd: pkg } 14 15var json = { 16 name: 'install-cli-development', 17 description: 'fixture', 18 version: '0.0.0', 19 dependencies: { 20 dependency: 'file:./dependency' 21 }, 22 devDependencies: { 23 'dev-dependency': 'file:./dev-dependency' 24 } 25} 26 27var dependency = { 28 name: 'dependency', 29 description: 'fixture', 30 version: '0.0.0' 31} 32 33var devDependency = { 34 name: 'dev-dependency', 35 description: 'fixture', 36 version: '0.0.0' 37} 38 39t.test('setup', t => { 40 mkdirp.sync(path.join(pkg, 'dependency')) 41 fs.writeFileSync( 42 path.join(pkg, 'dependency', 'package.json'), 43 JSON.stringify(dependency, null, 2) 44 ) 45 46 mkdirp.sync(path.join(pkg, 'dev-dependency')) 47 fs.writeFileSync( 48 path.join(pkg, 'dev-dependency', 'package.json'), 49 JSON.stringify(devDependency, null, 2) 50 ) 51 52 mkdirp.sync(path.join(pkg, 'node_modules')) 53 fs.writeFileSync( 54 path.join(pkg, 'package.json'), 55 JSON.stringify(json, null, 2) 56 ) 57 58 t.end() 59}) 60 61t.test('\'npm install --only=development\' should only install devDependencies', function (t) { 62 common.npm(['install', '--only=development'], EXEC_OPTS, function (err, code) { 63 t.ifError(err, 'install development successful') 64 t.equal(code, 0, 'npm install did not raise error code') 65 t.ok( 66 JSON.parse(fs.readFileSync( 67 path.resolve(pkg, 'node_modules/dev-dependency/package.json'), 'utf8') 68 ), 69 'devDependency was installed' 70 ) 71 t.notOk( 72 existsSync(path.resolve(pkg, 'node_modules/dependency/package.json')), 73 'dependency was NOT installed' 74 ) 75 rimraf(path.join(pkg, 'node_modules'), t.end) 76 }) 77}) 78 79t.test('\'npm install --only=development\' should only install devDependencies regardless of npm.config.get(\'production\')', function (t) { 80 common.npm(['install', '--only=development', '--production'], EXEC_OPTS, function (err, code) { 81 t.ifError(err, 'install development successful') 82 t.equal(code, 0, 'npm install did not raise error code') 83 t.ok( 84 JSON.parse(fs.readFileSync( 85 path.resolve(pkg, 'node_modules/dev-dependency/package.json'), 'utf8') 86 ), 87 'devDependency was installed' 88 ) 89 t.notOk( 90 existsSync(path.resolve(pkg, 'node_modules/dependency/package.json')), 91 'dependency was NOT installed' 92 ) 93 rimraf(path.join(pkg, 'node_modules'), t.end) 94 }) 95}) 96