FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
angular/decorate-angular-cli.js at develop · newdev213/angular · GitHub
newdev213
/
angular
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
angular
/
decorate-angular-cli.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
87 lines (81 loc) · 2.98 KB
Breadcrumbs
angular
/
decorate-angular-cli.js
Copy path
File metadata and controls
87 lines (81 loc) · 2.98 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
/**
* This file decorates the Angular CLI with the Nx CLI to enable features such as computation caching
* and faster execution of tasks.
*
* It does this by:
*
* - Patching the Angular CLI to warn you in case you accidentally use the undecorated ng command.
* - Symlinking the ng to nx command, so all commands run through the Nx CLI
* - Updating the package.json postinstall script to give you control over this script
*
* The Nx CLI decorates the Angular CLI, so the Nx CLI is fully compatible with it.
* Every command you run should work the same when using the Nx CLI, except faster.
*
* Because of symlinking you can still type `ng build/test/lint` in the terminal. The ng command, in this case,
* will point to nx, which will perform optimizations before invoking ng. So the Angular CLI is always invoked.
* The Nx CLI simply does some optimizations before invoking the Angular CLI.
*
* To opt out of this patch:
* - Replace occurrences of nx with ng in your package.json
* - Remove the script from your postinstall script in your package.json
* - Delete and reinstall your node_modules
*/
const
fs
=
require
(
'fs'
)
;
const
os
=
require
(
'os'
)
;
const
cp
=
require
(
'child_process'
)
;
const
isWindows
=
os
.
platform
(
)
===
'win32'
;
const
{
output
}
=
require
(
'@nrwl/workspace'
)
;
/**
* Paths to files being patched
*/
const
angularCLIInitPath
=
'node_modules/@angular/cli/lib/cli/index.js'
;
/**
* Patch index.js to warn you if you invoke the undecorated Angular CLI.
*/
function
patchAngularCLI
(
initPath
)
{
const
angularCLIInit
=
fs
.
readFileSync
(
initPath
,
'utf-8'
)
.
toString
(
)
;
if
(
!
angularCLIInit
.
includes
(
'NX_CLI_SET'
)
)
{
fs
.
writeFileSync
(
initPath
,
`
if (!process.env['NX_CLI_SET']) {
const { output } = require('@nrwl/workspace');
output.warn({ title: 'The Angular CLI was invoked instead of the Nx CLI. Use "npx ng [command]" or "nx [command]" instead.' });
}
${
angularCLIInit
}
`
)
;
}
}
/**
* Symlink of ng to nx, so you can keep using `ng build/test/lint` and still
* invoke the Nx CLI and get the benefits of computation caching.
*/
function
symlinkNgCLItoNxCLI
(
)
{
try
{
const
ngPath
=
'./node_modules/.bin/ng'
;
const
nxPath
=
'./node_modules/.bin/nx'
;
if
(
isWindows
)
{
/**
* This is the most reliable way to create symlink-like behavior on Windows.
* Such that it works in all shells and works with npx.
*/
[
''
,
'.cmd'
,
'.ps1'
]
.
forEach
(
(
ext
)
=>
{
fs
.
writeFileSync
(
ngPath
+
ext
,
fs
.
readFileSync
(
nxPath
+
ext
)
)
;
}
)
;
}
else
{
// If unix-based, symlink
cp
.
execSync
(
`ln -sf ./nx
${
ngPath
}
`
)
;
}
}
catch
(
e
)
{
output
.
error
(
{
title
:
'Unable to create a symlink from the Angular CLI to the Nx CLI:'
+
e
.
message
}
)
;
throw
e
;
}
}
try
{
symlinkNgCLItoNxCLI
(
)
;
patchAngularCLI
(
angularCLIInitPath
)
;
output
.
log
(
{
title
:
'Angular CLI has been decorated to enable computation caching.'
}
)
;
}
catch
(
e
)
{
output
.
error
(
{
title
:
'Decoration of the Angular CLI did not complete successfully'
}
)
;
}
Back
|
FazBrowse Home
|
New Git URL