-
Notifications
You must be signed in to change notification settings - Fork 0
/
lerna.js
executable file
·110 lines (99 loc) · 2.86 KB
/
lerna.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const { loadPackages, iter, exec } = require("lerna-script");
const { join, basename, dirname } = require("path");
const {
extraneous,
unmanaged,
sync,
latest
} = require("lerna-script-tasks-dependencies");
module.exports["deps:sync"] = sync();
module.exports["deps:extraneous"] = extraneous();
module.exports["deps:unmanaged"] = unmanaged();
/**
* Lerna script that iterates packages
* looking for lambdas to archive.
*/
module.exports.packageLambda = async log => {
try {
log.info("packaging lambdas in all modules that have them");
const packages = await loadPackages();
const zipScript = join(process.cwd(), "scripts", "lerna", "zip");
const lambdaProperties = lambdaLocation => {
const packageName = basename(dirname(lambdaLocation));
const packageLocation = join(process.cwd(), "packages", packageName);
return {
packageName,
packageLocation
};
};
return await iter.parallel(packages)(lernaPackage => {
if (basename(lernaPackage.location) === "lambda_packages") {
const { packageName, packageLocation } = lambdaProperties(
lernaPackage.location
);
exec.command(lernaPackage)(
`${zipScript} ${packageName} ${packageLocation}`
);
}
});
} catch (error) {
throw error;
}
};
/**
* Lerna script that writes an .npmrc files to each
* package
*/
module.exports.writeNpmrc = async log => {
try {
log.info("writing .npmrc files in npm packages");
const packages = await loadPackages();
const writeNpmrcScript = join(
process.cwd(),
"scripts",
"lerna",
"writeNpmrc"
);
exec.command(process.cwd())(`${writeNpmrcScript} .`);
return await iter.parallel(packages)(lernaPackage => {
const typeOfPackage = basename(dirname(lernaPackage.location));
if (typeOfPackage === "packages") {
exec.command(lernaPackage)(`${writeNpmrcScript} .`);
}
});
} catch (error) {
log.info(error);
throw error;
}
};
/**
* Lerna script that updates npm mods in root
* and all packages
* @todo get rid of lerna-script error:
* (node:7700) MaxListenersExceededWarning:
* Possible EventEmitter memory leak detected.
* 11 close listeners added. Use emitter.setMaxListeners() to increase limit
*/
module.exports.updateNpmMods = async log => {
try {
log.info("updating npm mods");
const packages = await loadPackages();
const updateNpmModScript = join(
process.cwd(),
"scripts",
"lerna",
"updateMods"
);
exec.command(process.cwd(), { silent: false })(
`${updateNpmModScript} ${process.cwd()}`
);
return await iter.forEach(packages)(lernaPackage => {
exec.command(lernaPackage, { silent: false })(
`${updateNpmModScript} ${lernaPackage.location}`
);
});
} catch (error) {
log.info(error);
throw error;
}
};