forked from nrwl/nx
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcheck-imports.js
87 lines (80 loc) · 2.77 KB
/
check-imports.js
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
#!/usr/bin/env node
const path = require('path');
const fs = require('fs');
function allFilesInDir(dirName) {
let res = [];
try {
fs.readdirSync(dirName).forEach((c) => {
const child = path.join(dirName, c);
try {
const s = fs.statSync(child);
if (path.extname(child) === '.ts') {
res.push({
name: child,
content: fs.readFileSync(child).toString(),
});
} else if (s.isDirectory()) {
res = [...res, ...allFilesInDir(child)];
}
} catch (e) {}
});
} catch (e) {}
return res;
}
function check() {
const exceptions = [
'packages/create-nx-workspace/bin/create-nx-workspaces.ts',
'packages/create-nx-plugin/bin/create-nx-plugin.ts',
'packages/workspace/src/command-line/affected.ts',
'packages/workspace/src/command-line/report.ts',
'packages/workspace/src/command-line/report.spec.ts',
'packages/workspace/src/core/file-command-line-utils.ts',
'packages/workspace/src/generators/preset/preset.ts',
'packages/workspace/src/generators/init/init.ts',
'packages/workspace/src/utils/update-task.ts',
'packages/workspace/src/migrations/update-8-3-0/update-8-3-0.spec.ts',
'packages/workspace/src/migrations/update-8-3-0/update-ng-cli-8-1.ts',
'packages/workspace/src/migrations/update-8-12-0/update-package-json-deps.spec.ts',
'packages/workspace/src/tasks-runner/task-orchestrator.ts',
'packages/nest/src/generators/init/lib/add-dependencies.ts',
'packages/nest/src/migrations/update-13-2-0/update-to-nest-8.ts',
];
const files = [
...allFilesInDir('packages/create-nx-workspace'),
...allFilesInDir('packages/create-nx-plugin'),
...allFilesInDir('packages/cypress'),
...allFilesInDir('packages/express'),
...allFilesInDir('packages/jest'),
...allFilesInDir('packages/nest'),
...allFilesInDir('packages/node'),
...allFilesInDir('packages/react'),
...allFilesInDir('packages/web'),
...allFilesInDir('packages/workspace'),
];
const invalidFiles = [];
files.forEach((f) => {
if (f.content.indexOf('@schematics/angular') > -1) {
invalidFiles.push(f.name);
}
if (f.content.indexOf('@angular/') > -1) {
invalidFiles.push(f.name);
}
if (f.content.indexOf("'@angular-devkit/build-angular';") > -1) {
invalidFiles.push(f.name);
}
if (f.content.indexOf('@angular-devkit/build-angular/') > -1) {
invalidFiles.push(f.name);
}
});
return invalidFiles.filter((f) => !exceptions.includes(f));
}
const invalid = check();
if (invalid.length > 0) {
console.error(
'The following files import @schematics/angular or @angular/* or @angular-devkit/build-angular'
);
invalid.forEach((e) => console.log(e));
process.exit(1);
} else {
process.exit(0);
}