1 |
|
2 | const fs = require('fs')
|
3 | const { resolve } = require('path')
|
4 |
|
5 | const isGlob = require('is-glob')
|
6 | const globSync = require('tiny-glob/sync')
|
7 |
|
8 | exports.tryFile = filePath => (fs.existsSync(filePath) ? filePath : undefined)
|
9 |
|
10 | let pkg = {}
|
11 |
|
12 | try {
|
13 | pkg = require(resolve('package.json'))
|
14 | } catch (e) {}
|
15 |
|
16 | let lernaConfig
|
17 |
|
18 | try {
|
19 | lernaConfig = require(resolve('lerna.json'))
|
20 | } catch (e) {}
|
21 |
|
22 | const pkgsPath = (lernaConfig && lernaConfig.packages) || pkg.workspaces
|
23 |
|
24 | exports.isMonorepo = Array.isArray(pkgsPath)
|
25 |
|
26 | if (exports.isMonorepo) {
|
27 | const pkgs = pkgsPath.reduce(
|
28 | (acc, pkg) =>
|
29 | acc
|
30 | .concat(
|
31 | isGlob(pkg)
|
32 | ? globSync(pkg).map(sub => resolve(sub))
|
33 | : exports.tryFile(resolve(pkg)),
|
34 | )
|
35 | .filter(Boolean),
|
36 | [],
|
37 | )
|
38 |
|
39 | try {
|
40 | exports.allowModules = pkgs.reduce((acc, pkg) => {
|
41 | const pkgJson = resolve(pkg, 'package.json')
|
42 | return fs.existsSync(pkgJson) ? acc.concat(require(pkgJson).name) : acc
|
43 | }, [])
|
44 | } catch (e) {}
|
45 | }
|
46 |
|
47 | try {
|
48 | exports.isSrcDirAvailable = fs.statSync(resolve('src')).isDirectory()
|
49 | } catch (e) {}
|
50 |
|
51 | try {
|
52 | exports.isSrcAppDirAvailable = fs.statSync(resolve('src/app')).isDirectory()
|
53 | } catch (e) {}
|
54 |
|
55 | try {
|
56 | exports.isNgAvailable = !!require.resolve('@angular/core')
|
57 | } catch (e) {}
|
58 |
|
59 | try {
|
60 | exports.isWebpackAvailable = !!require.resolve('webpack')
|
61 | } catch (e) {}
|
62 |
|
63 |
|
64 | exports.webpackSpecVars = [
|
65 | '__resourceQuery',
|
66 | '__non_webpack_require__',
|
67 | '__webpack_chunk_load__',
|
68 | '__webpack_hash__',
|
69 | '__webpack_modules__',
|
70 | '__webpack_public_path__',
|
71 | '__webpack_require__',
|
72 | 'DEBUG',
|
73 | ]
|
74 |
|
75 | exports.magicNumbers = [
|
76 | -1,
|
77 | 0,
|
78 | 1,
|
79 | 2,
|
80 | 5,
|
81 | 7,
|
82 | 10,
|
83 | 12,
|
84 | 15,
|
85 | 20,
|
86 | 24,
|
87 | 30,
|
88 | 50,
|
89 | 60,
|
90 | 100,
|
91 | 365,
|
92 | 500,
|
93 | 1000,
|
94 | 1024,
|
95 | 3600,
|
96 | ]
|