UNPKG

5.07 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.isElectronCompileUsed = isElectronCompileUsed;
7exports.hasDep = hasDep;
8exports.createTransformer = createTransformer;
9exports.createElectronCompilerHost = createElectronCompilerHost;
10exports.NODE_MODULES_PATTERN = void 0;
11
12function _bluebirdLst() {
13 const data = require("bluebird-lst");
14
15 _bluebirdLst = function () {
16 return data;
17 };
18
19 return data;
20}
21
22function _builderUtil() {
23 const data = require("builder-util");
24
25 _builderUtil = function () {
26 return data;
27 };
28
29 return data;
30}
31
32function _fsExtraP() {
33 const data = require("fs-extra-p");
34
35 _fsExtraP = function () {
36 return data;
37 };
38
39 return data;
40}
41
42var path = _interopRequireWildcard(require("path"));
43
44let modifyMainPackageJson = (() => {
45 var _ref = (0, _bluebirdLst().coroutine)(function* (file, extraMetadata, isRemovePackageScripts) {
46 const mainPackageData = JSON.parse((yield (0, _fsExtraP().readFile)(file, "utf-8")));
47
48 if (extraMetadata != null) {
49 (0, _builderUtil().deepAssign)(mainPackageData, extraMetadata);
50 } // https://github.com/electron-userland/electron-builder/issues/1212
51
52
53 const serializedDataIfChanged = cleanupPackageJson(mainPackageData, {
54 isMain: true,
55 isRemovePackageScripts
56 });
57
58 if (serializedDataIfChanged != null) {
59 return serializedDataIfChanged;
60 } else if (extraMetadata != null) {
61 return JSON.stringify(mainPackageData, null, 2);
62 }
63
64 return null;
65 });
66
67 return function modifyMainPackageJson(_x, _x2, _x3) {
68 return _ref.apply(this, arguments);
69 };
70})(); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
71
72/** @internal */
73const NODE_MODULES_PATTERN = `${path.sep}node_modules${path.sep}`;
74/** @internal */
75
76exports.NODE_MODULES_PATTERN = NODE_MODULES_PATTERN;
77
78function isElectronCompileUsed(info) {
79 if (info.config.electronCompile != null) {
80 return info.config.electronCompile;
81 } // if in devDependencies - it means that babel is used for precompilation or for some reason user decided to not use electron-compile for production
82
83
84 return hasDep("electron-compile", info);
85}
86/** @internal */
87
88
89function hasDep(name, info) {
90 const deps = info.metadata.dependencies;
91 return deps != null && name in deps;
92}
93/** @internal */
94
95
96function createTransformer(srcDir, configuration, extraMetadata, extraTransformer) {
97 const mainPackageJson = path.join(srcDir, "package.json");
98 const isRemovePackageScripts = configuration.removePackageScripts !== false;
99 const packageJson = path.sep + "package.json";
100 return file => {
101 if (file === mainPackageJson) {
102 return modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts);
103 }
104
105 if (file.endsWith(packageJson) && file.includes(NODE_MODULES_PATTERN)) {
106 return (0, _fsExtraP().readFile)(file, "utf-8").then(it => cleanupPackageJson(JSON.parse(it), {
107 isMain: false,
108 isRemovePackageScripts
109 })).catch(e => _builderUtil().log.warn(e));
110 } else if (extraTransformer != null) {
111 return extraTransformer(file);
112 } else {
113 return null;
114 }
115 };
116}
117/** @internal */
118
119
120function createElectronCompilerHost(projectDir, cacheDir) {
121 const electronCompilePath = path.join(projectDir, "node_modules", "electron-compile", "lib");
122 return require(path.join(electronCompilePath, "config-parser")).createCompilerHostFromProjectRoot(projectDir, cacheDir);
123}
124
125const ignoredPackageMetadataProperties = new Set(["dist", "gitHead", "keywords", "build", "jspm", "ava", "xo", "nyc", "eslintConfig", "contributors", "bundleDependencies", "tags"]);
126
127function cleanupPackageJson(data, options) {
128 const deps = data.dependencies; // https://github.com/electron-userland/electron-builder/issues/507#issuecomment-312772099
129
130 const isRemoveBabel = deps != null && typeof deps === "object" && !Object.getOwnPropertyNames(deps).some(it => it.startsWith("babel"));
131
132 try {
133 let changed = false;
134
135 for (const prop of Object.getOwnPropertyNames(data)) {
136 // removing devDependencies from package.json breaks levelup in electron, so, remove it only from main package.json
137 if (prop[0] === "_" || ignoredPackageMetadataProperties.has(prop) || options.isRemovePackageScripts && prop === "scripts" || options.isMain && prop === "devDependencies" || !options.isMain && prop === "bugs" || isRemoveBabel && prop === "babel") {
138 delete data[prop];
139 changed = true;
140 }
141 }
142
143 if (changed) {
144 return JSON.stringify(data, null, 2);
145 }
146 } catch (e) {
147 (0, _builderUtil().debug)(e);
148 }
149
150 return null;
151}
152//# sourceMappingURL=fileTransformer.js.map
\No newline at end of file