UNPKG

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