forked from marudor/bahn.expert
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.dependency-cruiser.js
229 lines (215 loc) · 6.51 KB
/
.dependency-cruiser.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
module.exports = {
forbidden: [
{
name: 'not-from-common',
severity: 'warn',
from: {
path: 'src/client/Common',
},
to: {
path: 'src/client/(Abfahrten|Routing)',
},
},
{
name: 'Routing-to-Abfahrten',
severity: 'warn',
from: {
path: 'src/client/Routing',
},
to: {
path: 'src/client/Abfahrten',
},
},
{
name: 'Abfahrten-to-Routing',
severity: 'warn',
from: {
path: 'src/client/Abfahrten',
},
to: {
path: 'src/client/Routing',
},
},
/* rules from the 'recommended' preset: */
{
name: 'no-circular',
severity: 'warn',
comment: "Warn in case there's circular dependencies",
from: {},
to: {
circular: true,
},
},
{
name: 'no-orphans',
severity: 'info',
comment: "Inform in case there's orphans hiding in the code base",
from: {
orphan: true,
path: 'src/(client|server)',
pathNot: '\\.d\\.ts$',
},
to: {},
},
{
name: 'no-deprecated-core',
comment: 'Warn about dependencies on deprecated core modules.',
severity: 'warn',
from: {},
to: {
dependencyTypes: ['core'],
path: '^(punycode|domain|constants|sys|_linklist)$',
},
},
{
name: 'no-deprecated-npm',
comment: 'These npm modules are deprecated - find an alternative.',
severity: 'warn',
from: {},
to: {
dependencyTypes: ['deprecated'],
},
},
{
name: 'not-to-unresolvable',
comment:
"Don't allow dependencies on modules dependency-cruiser can't resolve to files on disk (which probably means they don't exist)",
severity: 'error',
from: {},
to: {
couldNotResolve: true,
},
},
{
name: 'no-duplicate-dep-types',
comment:
"Warn if a dependency you're actually using occurs in your package.json more than once (technically: has more than one dependency type)",
severity: 'warn',
from: {},
to: {
moreThanOneDependencyType: true,
},
},
/* rules you might want to tweak for your specific situation: */
{
name: 'not-to-test',
comment: "Don't allow dependencies from outside the test folder to test",
severity: 'error',
from: {
pathNot: '^(test|spec)',
},
to: {
path: '^(test|spec)',
},
},
{
name: 'not-to-spec',
comment:
"Don't allow dependencies to (typescript/ javascript/ coffeescript) spec files",
severity: 'error',
from: {},
to: {
path: '\\.spec\\.(js|ts|ls|coffee|litcoffee|coffee\\.md)$',
},
},
{
name: 'not-to-dev-dep',
severity: 'error',
comment:
"Don't allow dependencies from src/app/lib to a development only package",
from: {
path: '^(src|app|lib)',
pathNot:
'(\\.spec\\.(js|ts|ls|coffee|litcoffee|coffee\\.md)$|src/server/middleware/webpackDev.ts)',
},
to: {
dependencyTypes: ['npm-dev'],
pathNot: '^node_modules/idx/lib/idx.js$',
},
},
{
name: 'optional-deps-used',
severity: 'info',
comment:
"Inform when using an optional dependency. It might not be wrong - but it's not typicaly either",
from: {},
to: {
dependencyTypes: ['npm-optional'],
},
},
{
name: 'peer-deps-used',
comment:
"Warn when using a peer dependency - which might not be wrong - but it's not typicaly either",
severity: 'warn',
from: {},
to: {
dependencyTypes: ['npm-peer'],
},
},
],
options: {
/* conditions specifying which files not to follow further when encountered:
- path: a regular expression to match
- dependencyTypes: see https://github.com/sverweij/dependency-cruiser/blob/develop/doc/rules-reference.md#dependencytypes
for a complete list
*/
doNotFollow: {
// path: 'node_modules',
dependencyTypes: [
'npm',
'npm-dev',
'npm-optional',
'npm-peer',
'npm-bundled',
'npm-no-pkg',
],
},
/* pattern specifying which files to exclude (regular expression) */
exclude: 'src/app',
/* pattern specifying which files to include (regular expression)
dependency-cruiser will skip everything not matching this pattern
*/
// , includeOnly : ''
/* list of module systems to cruise */
// , moduleSystems: ['amd', 'cjs', 'es6', 'tsd']
/* prefix for links in html and svg output (e.g. https://github.com/you/yourrepo/blob/develop/) */
// , prefix: ''
/* if true detect dependencies that only exist before typescript-to-javascript compilation */
// , tsPreCompilationDeps: false
/* if true combines the package.jsons found from the module up to the base
folder the cruise is initiated from. Useful for how (some) mono-repos
manage dependencies & dependency definitions.
*/
// , combinedDependencies: false
/* if true leave symlinks untouched, otherwise use the realpath */
// , preserveSymlinks: false
/* Typescript project file ('tsconfig.json') to use for
(1) compilation and
(2) resolution (e.g. with the paths property)
The (optional) fileName attribute specifies which file to take (relative to
dependency-cruiser's current working directory). When not provided
defaults to './tsconfig.json'.
*/
tsConfig: {
fileName: './tsconfig.json',
},
/* Webpack configuration to use to get resolve options from.
The (optional) fileName attribute specifies which file to take (relative to dependency-cruiser's
current working directory. When not provided defaults to './webpack.conf.js'.
The (optional) `env` and `args` attributes contain the parameters to be passed if
your webpack config is a function and takes them (see webpack documentation
for details)
*/
webpackConfig: {
fileName: './webpack.config.js',
// , env: {}
// , args: {}
},
/* How to resolve external modules - use "yarn-pnp" if you're using yarn's Plug'n'Play.
otherwise leave it out (or set to the default, which is 'node_modules')
*/
// , externalModuleResolutionStrategy: 'node_modules'
},
};
// generated: [email protected] on 2019-04-28T18:30:44.331Z