FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
webpack/setup/setup.js at main · miloscript/webpack · GitHub
miloscript
webpack
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
webpack
/
setup
/
setup.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
111 lines (102 loc) · 2.86 KB
Breadcrumbs
webpack
/
setup
/
setup.js
Copy path
File metadata and controls
111 lines (102 loc) · 2.86 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
"use strict"
;
const
fs
=
require
(
"fs"
)
;
const
path
=
require
(
"path"
)
;
const
root
=
process
.
cwd
(
)
;
const
node_modulesFolder
=
path
.
resolve
(
root
,
"node_modules"
)
;
const
webpackDependencyFolder
=
path
.
resolve
(
root
,
"node_modules/webpack"
)
;
function
setup
(
)
{
return
Promise
.
all
(
[
checkSymlinkExistsAsync
(
)
.
then
(
async
hasSymlink
=>
{
if
(
!
hasSymlink
)
{
await
ensureYarnInstalledAsync
(
)
;
await
runSetupSymlinkAsync
(
)
;
if
(
!
(
await
checkSymlinkExistsAsync
(
)
)
)
{
throw
new
Error
(
"windows symlink was not successfully created"
)
;
}
}
}
)
]
)
.
then
(
(
)
=>
{
process
.
exitCode
=
0
;
}
)
.
catch
(
e
=>
{
console
.
error
(
e
)
;
process
.
exitCode
=
1
;
}
)
;
}
async
function
runSetupSymlinkAsync
(
)
{
await
exec
(
"yarn"
,
[
"install"
]
,
"Install dependencies"
)
;
await
exec
(
"yarn"
,
[
"link"
]
,
"Create webpack symlink"
)
;
await
exec
(
"yarn"
,
[
"link"
,
"webpack"
]
,
"Link webpack into itself"
)
;
}
function
checkSymlinkExistsAsync
(
)
{
return
new
Promise
(
(
resolve
,
reject
)
=>
{
if
(
fs
.
existsSync
(
node_modulesFolder
)
&&
fs
.
existsSync
(
webpackDependencyFolder
)
&&
fs
.
lstatSync
(
webpackDependencyFolder
)
.
isSymbolicLink
(
)
)
{
resolve
(
true
)
;
}
else
{
resolve
(
false
)
;
}
}
)
;
}
async
function
ensureYarnInstalledAsync
(
)
{
const
semverPattern
=
/
^
(
0
|
[
1
-
9
]
\d
*
)
\.
(
0
|
[
1
-
9
]
\d
*
)
\.
(
0
|
[
1
-
9
]
\d
*
)
(
-
(
0
|
[
1
-
9
]
\d
*
|
\d
*
[
a
-
z
A
-
Z
-
]
[
0
-
9
a
-
z
A
-
Z
-
]
*
)
(
\.
(
0
|
[
1
-
9
]
\d
*
|
\d
*
[
a
-
z
A
-
Z
-
]
[
0
-
9
a
-
z
A
-
Z
-
]
*
)
)
*
)
?
(
\+
[
0
-
9
a
-
z
A
-
Z
-
]
+
(
\.
[
0
-
9
a
-
z
A
-
Z
-
]
+
)
*
)
?
$
/
;
let
hasYarn
=
false
;
try
{
const
stdout
=
await
execGetOutput
(
"yarn"
,
[
"-v"
]
,
"Check yarn version"
)
;
hasYarn
=
semverPattern
.
test
(
stdout
)
;
}
catch
(
e
)
{
hasYarn
=
false
;
}
if
(
!
hasYarn
)
await
installYarnAsync
(
)
;
}
function
installYarnAsync
(
)
{
return
exec
(
"npm"
,
[
"install"
,
"-g"
,
"yarn"
]
,
"Install yarn"
)
;
}
function
exec
(
command
,
args
,
description
)
{
console
.
log
(
`Setup:
${
description
}
`
)
;
return
new
Promise
(
(
resolve
,
reject
)
=>
{
let
cp
=
require
(
"child_process"
)
.
spawn
(
command
,
args
,
{
cwd
:
root
,
stdio
:
"inherit"
,
shell
:
true
}
)
;
cp
.
on
(
"error"
,
error
=>
{
reject
(
new
Error
(
`
${
description
}
failed with
${
error
}
`
)
)
;
}
)
;
cp
.
on
(
"exit"
,
exitCode
=>
{
if
(
exitCode
)
{
reject
(
`
${
description
}
failed with exit code
${
exitCode
}
`
)
;
}
else
{
resolve
(
)
;
}
}
)
;
}
)
;
}
function
execGetOutput
(
command
,
args
,
description
)
{
console
.
log
(
`Setup:
${
description
}
`
)
;
return
new
Promise
(
(
resolve
,
reject
)
=>
{
let
cp
=
require
(
"child_process"
)
.
spawn
(
command
,
args
,
{
cwd
:
root
,
stdio
:
[
process
.
stdin
,
"pipe"
,
process
.
stderr
]
,
shell
:
true
}
)
;
cp
.
on
(
"error"
,
error
=>
{
reject
(
new
Error
(
`
${
description
}
failed with
${
error
}
`
)
)
;
}
)
;
cp
.
on
(
"exit"
,
exitCode
=>
{
if
(
exitCode
)
{
reject
(
`
${
description
}
failed with exit code
${
exitCode
}
`
)
;
}
else
{
resolve
(
Buffer
.
concat
(
buffers
)
.
toString
(
"utf-8"
)
.
trim
(
)
)
;
}
}
)
;
const
buffers
=
[
]
;
cp
.
stdout
.
on
(
"data"
,
data
=>
buffers
.
push
(
data
)
)
;
}
)
;
}
setup
(
)
;
Back
|
FazBrowse Home
|
New Git URL