-
Notifications
You must be signed in to change notification settings - Fork 814
/
dependency-check.js
67 lines (60 loc) · 2.27 KB
/
dependency-check.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
Copyright 2018 Google LLC
Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.
*/
const upath = require('upath');
const depcheck = require('depcheck');
describe(`[workbox-build] Test Dependencies`, function() {
it(`should have required dependencies`, function() {
return new Promise((resolve, reject) => {
depcheck(upath.join(__dirname, '..', '..', '..', 'packages', 'workbox-build'), {
ignoreDirs: [
'test',
'build',
'demo',
],
ignoreMatches: [
'@babel/preset-env',
'@babel/runtime',
'workbox-background-sync',
'workbox-broadcast-update',
'workbox-cacheable-response',
'workbox-core',
'workbox-expiration',
'workbox-google-analytics',
'workbox-navigation-preload',
'workbox-precaching',
'workbox-range-requests',
'workbox-routing',
'workbox-strategies',
'workbox-streams',
'workbox-sw',
'workbox-window',
],
}, (unusedDeps) => {
if (unusedDeps.dependencies.length > 0) {
return reject(new Error(`Unused dependencies defined in package.json: ${JSON.stringify(unusedDeps.dependencies)}`));
}
if (unusedDeps.devDependencies.length > 0) {
return reject(new Error(`Unused dependencies defined in package.json: ${JSON.stringify(unusedDeps.devDependencies)}`));
}
if (Object.keys(unusedDeps.missing).length > 0) {
return reject(new Error(`Dependencies missing from package.json: ${JSON.stringify(unusedDeps.missing)}`));
}
resolve();
});
});
});
it(`should have no devDependencies`, function() {
// This test exists because there have been a number of situations where
// dependencies have been used from the top level project and NOT from
// this module itself. So dependencies are checked above and devDependencies
// can be put in top level.
const pkg = require('../../../packages/workbox-build/package.json');
if (pkg.devDependencies && Object.keys(pkg.devDependencies) > 0) {
throw new Error('No devDependencies in this module.');
}
});
});