• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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