UNPKG

1.86 kBJavaScriptView Raw
1/* eslint-disable node/no-extraneous-require */
2const fs = require('fs')
3const { resolve } = require('path')
4
5const isGlob = require('is-glob')
6const globSync = require('tiny-glob/sync')
7
8exports.tryFile = filePath => (fs.existsSync(filePath) ? filePath : undefined)
9
10let pkg = {}
11
12try {
13 pkg = require(resolve('package.json'))
14} catch (e) {}
15
16let lernaConfig
17
18try {
19 lernaConfig = require(resolve('lerna.json'))
20} catch (e) {}
21
22const pkgsPath = (lernaConfig && lernaConfig.packages) || pkg.workspaces
23
24exports.isMonorepo = Array.isArray(pkgsPath)
25
26if (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
47try {
48 exports.isSrcDirAvailable = fs.statSync(resolve('src')).isDirectory()
49} catch (e) {}
50
51try {
52 exports.isSrcAppDirAvailable = fs.statSync(resolve('src/app')).isDirectory()
53} catch (e) {}
54
55try {
56 exports.isNgAvailable = !!require.resolve('@angular/core')
57} catch (e) {}
58
59try {
60 exports.isWebpackAvailable = !!require.resolve('webpack')
61} catch (e) {}
62
63// https://webpack.js.org/api/module-variables/#__resourcequery-webpack-specific
64exports.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
75exports.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]