Skip to content

Commit 6507cff

Browse files
Merge pull request #542 from 20minutes/fix/remove-optional-peer-deps
Remove optional peer dependencies
2 parents 98a9592 + 0563222 commit 6507cff

3 files changed

Lines changed: 330 additions & 102 deletions

File tree

lib/packExternalModules.js

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,32 @@ function getProdModules(externalModules, packagePath, dependencyGraph, forceExcl
9494
const peerDependencies = require(modulePackagePath).peerDependencies;
9595
if (!_.isEmpty(peerDependencies)) {
9696
this.options.verbose && this.serverless.cli.log(`Adding explicit peers for dependency ${module.external}`);
97-
const peerModules = getProdModules.call(
98-
this,
99-
_.map(peerDependencies, (value, key) => ({ external: key })),
100-
packagePath,
101-
dependencyGraph,
102-
forceExcludes
103-
);
104-
Array.prototype.push.apply(prodModules, peerModules);
97+
98+
const peerDependenciesMeta = require(modulePackagePath).peerDependenciesMeta;
99+
100+
if (!_.isEmpty(peerDependenciesMeta)) {
101+
_.forEach(peerDependencies, (value, key) => {
102+
if (peerDependenciesMeta[key] && peerDependenciesMeta[key].optional === true) {
103+
this.options.verbose &&
104+
this.serverless.cli.log(
105+
`Skipping peers dependency ${key} for dependency ${module.external} because it's optional`
106+
);
107+
108+
_.unset(peerDependencies, key);
109+
}
110+
});
111+
}
112+
113+
if (!_.isEmpty(peerDependencies)) {
114+
const peerModules = getProdModules.call(
115+
this,
116+
_.map(peerDependencies, (value, key) => ({ external: key })),
117+
packagePath,
118+
dependencyGraph,
119+
forceExcludes
120+
);
121+
Array.prototype.push.apply(prodModules, peerModules);
122+
}
105123
}
106124
} catch (e) {
107125
this.serverless.cli.log(`WARNING: Could not check for peer dependencies of ${module.external}`);
@@ -424,3 +442,4 @@ module.exports = {
424442
});
425443
}
426444
};
445+
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
{
2+
"_from": "request-promise",
3+
"_id": "request-promise@4.2.1",
4+
"_inBundle": false,
5+
"_integrity": "sha1-fuxWyJMXqCLL/qmbA5zlQ8LhX2c=",
6+
"_location": "/request-promise",
7+
"_phantomChildren": {},
8+
"_requested": {
9+
"type": "tag",
10+
"registry": true,
11+
"raw": "request-promise",
12+
"name": "request-promise",
13+
"escapedName": "request-promise",
14+
"rawSpec": "",
15+
"saveSpec": null,
16+
"fetchSpec": "latest"
17+
},
18+
"_requiredBy": [
19+
"#USER",
20+
"/"
21+
],
22+
"_resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.1.tgz",
23+
"_shasum": "7eec56c89317a822cbfea99b039ce543c2e15f67",
24+
"_spec": "request-promise",
25+
"_where": "C:\\Projects\\serverless\\test\\babel-dynamically-entries",
26+
"author": {
27+
"name": "Nicolai Kamenzky",
28+
"url": "https://github.com/analog-nico"
29+
},
30+
"bugs": {
31+
"url": "https://github.com/request/request-promise/issues"
32+
},
33+
"bundleDependencies": false,
34+
"dependencies": {
35+
"bluebird": "^3.5.0",
36+
"request-promise-core": "1.1.1",
37+
"stealthy-require": "^1.1.0",
38+
"tough-cookie": ">=2.3.0"
39+
},
40+
"deprecated": false,
41+
"description": "The simplified HTTP request client 'request' with Promise support. Powered by Bluebird.",
42+
"devDependencies": {
43+
"body-parser": "~1.15.2",
44+
"chai": "~3.5.0",
45+
"chalk": "~1.1.3",
46+
"gulp": "~3.9.1",
47+
"gulp-coveralls": "~0.1.4",
48+
"gulp-eslint": "~2.1.0",
49+
"gulp-istanbul": "~1.0.0",
50+
"gulp-mocha": "~2.2.0",
51+
"lodash": "~4.13.1",
52+
"publish-please": "~2.1.4",
53+
"request": "^2.34.0",
54+
"rimraf": "~2.5.3",
55+
"run-sequence": "~1.2.2"
56+
},
57+
"engines": {
58+
"node": ">=0.10.0"
59+
},
60+
"homepage": "https://github.com/request/request-promise#readme",
61+
"keywords": [
62+
"xhr",
63+
"http",
64+
"https",
65+
"promise",
66+
"request",
67+
"then",
68+
"thenable",
69+
"bluebird"
70+
],
71+
"license": "ISC",
72+
"main": "./lib/rp.js",
73+
"name": "request-promise",
74+
"peerDependencies": {
75+
"request": "^2.34",
76+
"canvas": "^2.5.0"
77+
},
78+
"peerDependenciesMeta": {
79+
"canvas": {
80+
"optional": true
81+
}
82+
},
83+
"repository": {
84+
"type": "git",
85+
"url": "git+https://github.com/request/request-promise.git"
86+
},
87+
"scripts": {
88+
"prepublish": "publish-please guard",
89+
"publish-please": "publish-please",
90+
"test": "gulp ci",
91+
"test-publish": "gulp ci-no-cov"
92+
},
93+
"version": "4.2.1"
94+
}

0 commit comments

Comments
 (0)