-
-
Notifications
You must be signed in to change notification settings - Fork 507
/
init-npm.ts
53 lines (43 loc) · 1.81 KB
/
init-npm.ts
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
import { asyncOra } from '@electron-forge/async-ora';
import debug from 'debug';
import fs from 'fs-extra';
import path from 'path';
import username from 'username';
import { setInitialForgeConfig } from '../../util/forge-config';
import installDepList, { DepType, DepVersionRestriction } from '../../util/install-dependencies';
import { readRawPackageJson } from '../../util/read-package-json';
const d = debug('electron-forge:init:npm');
const corePackage = fs.readJsonSync(path.resolve(__dirname, '../../../package.json'));
function siblingDep(name: string) {
return `@electron-forge/${name}@${corePackage.version}`;
}
export const deps = ['electron-squirrel-startup'];
export const devDeps = [
siblingDep('cli'),
siblingDep('maker-squirrel'),
siblingDep('maker-zip'),
siblingDep('maker-deb'),
siblingDep('maker-rpm'),
];
export const exactDevDeps = ['electron'];
export default async (dir: string) => {
await asyncOra('Initializing NPM Module', async () => {
const packageJSON = await readRawPackageJson(path.resolve(__dirname, '../../../tmpl'));
packageJSON.productName = packageJSON.name = path.basename(dir).toLowerCase();
packageJSON.author = await username();
setInitialForgeConfig(packageJSON);
packageJSON.scripts.lint = 'echo "No linting configured"';
d('writing package.json to:', dir);
await fs.writeJson(path.resolve(dir, 'package.json'), packageJSON, { spaces: 2 });
});
await asyncOra('Installing NPM Dependencies', async () => {
d('installing dependencies');
await installDepList(dir, deps);
d('installing devDependencies');
await installDepList(dir, devDeps, DepType.DEV);
d('installing exact devDependencies');
for (const packageName of exactDevDeps) {
await installDepList(dir, [packageName], DepType.DEV, DepVersionRestriction.EXACT);
}
});
};