src/a.ts
import { x } from "foo";
рдкреНрд░рдХрд╛рд░/foo.d.ts
export const x = 0;
tsconfig.json
{
"compilerOptions": {
"paths": {
"*": "types/*"
}
}
}
tslint.json
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде:
{
"rules": {
"no-implicit-dependencies": true
}
}
ERROR: /home/andy/sample/tslint/src/a.ts[1, 19]: Module 'foo' is not listed as dependency in package.json
рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдЖрдпрд╛рдд рдХреЛ node_modules
рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдпрд╛рдд рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдпрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдк рдХреБрдЫ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рдХреНрд▓реЛрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдЙрдкрдХрд░рдг рдпрд╣реА рдХрд░рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдкрде рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╡реЗ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВред рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдиреЛрдб/рд╡реЗрдмрдкреИрдХ/рдЬреЛ рдХреБрдЫ рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрде рдореИрдкрд┐рдВрдЧ рдХреЗрд╡рд▓ рддрднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдРрд╕реЗ рдЖрдпрд╛рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рдпрдо рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдХреЛрдИ package.json
рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рддрдм рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдзрдиреНрдпрд╡рд╛рдж!
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ "рдЖрдпрд╛рдд" рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
"compilerOptions": {
...
"paths": {
"tsbase": ["../tsBaseProject/src"],
"tslibrary": ["../tsProjectLibrary/src"]
}
}
рддрд╛рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдореЙрдбреНрдпреВрд▓ рдереЗред
рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
@marcoqu рдкрде рдореИрдкрд┐рдВрдЧ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ dependencies
рдпрд╛ peerDependencies
рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЬрдм рдореИрдВ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдорд╛рдзреНрдпрдорд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ "рдЖрдпрд╛рдд" рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдПрдХ рдмрдВрдбрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдереЗред рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ node_modules рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рджреНрд╡рд┐рддреАрдпрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ .ts рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рди рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВред
рд╢реНрд╡реЗрддрд╕реВрдЪреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП +1 рдЬреИрд╕реЗ рдиреЛ-рд╕рдмрдореЙрдбреНрдпреВрд▓-рдЖрдпрд╛рдд
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рднреА рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдбреАрдЖрдИрдЖрд░ рдореЗрдВ рдкрде рдЙрдкрдирд╛рдо '~' рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрдкрдирд╛рдо рдХреЛ рдмрд╛рдж рдореЗрдВ рд╡реЗрдмрдкреИрдХ, рдлрд╝реНрдпреВрдЬрд╝-рдмреЙрдХреНрд╕, рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 5.8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, tslint рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рдирдХрд▓реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ...
рдЙрд╕рдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛ ^^
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдкрд░реЛрдХреНрдд рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдирдореЗрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдПрдХ рддрд░рд╣ рдХрд╛ рд╡реНрдпрд░реНрде рдирд┐рдпрдоред
рдпрд╣ рдирд┐рдпрдо рддрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред
рд╣рдорд╛рд░реЗ tsconfig.json рдореЗрдВ, рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
"compilerOptions": {
...
"baseUrl": "./src",
"paths": {
"~/env": ["environments/environment"],
"~/*": ["app/*"]
}
}
рддрдм рд╣рдо рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:
import {FooService} from '~/core';
import {Environment} from '~/env';
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП (рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ tsconfig.json рдлрд╝рд╛рдЗрд▓)ред
рдореИрдВ рдЗрд╕ рдирд┐рдпрдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ред
@ рдПрдВрдбреА-рдПрдордПрд╕ рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрдХ рдкрдереЛрдВ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рд╣рдо рдЗрд╕реЗ рдПрдирдПрдХреНрд╕ рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдирд┐рдпрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реВрдВред
рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдлрд┐рдХреНрд╕ рдХреЛ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╣реАрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ ред рдореИрдВрдиреЗ рдпрд╣ рднреА рдЬрд╛рдВрдЪрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛
рдореИрдВ рдЗрд╕реЗ рднреА рдареАрдХ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рд╣рдж рддрдХ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рдпрд╛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдмрдирд╛рдП рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╡реИрд╕реЗ рднреА, рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
optionalDependencies
рд╕реЗ рдкрде рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдХрд▓реА рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ tsconfig.json
, рдФрд░ npm install --no-optional
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ yarn --ignore-optional
рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЕрднреА рднреА рдкреИрдХреЗрдЬ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред
рддреЛ, tsconfig.json
рдореЗрдВ рдкрде рдХреЗ рд╕рд╛рде рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:
"paths": {
"~/*": ["src/*"],
"some-path/*": ["whatever/*"]
}
рдФрд░ рдЗрд╕ рддрд░рд╣ package.json
рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ:
"optionalDependencies": {
"~": "tslint-hack",
"some-path": "tslint-hack"
},
npm install --no-optional
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдФрд░ рд╡рд┐рдХрд╛рд╕ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкреИрдХреЗрдЬ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ @
рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ .npmrc
рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, optional=false
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдмрд┐рдирд╛ npm install
рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХреЗрдВ --no-optional
рдЭрдВрдбрд╛ред
рдПрдХ рдЕрдиреНрдп рдЙрдкрд╛рдп рдпрд╣ рд╣реИ рдХрд┐ _ should_ рдХрд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛, рдХрд░рдирд╛ рд╣реИ ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ .npmrc
рдпрд╛ .yarnrc
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐ рдореЙрдбреНрдпреВрд▓ рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░рд┐рдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ tslint рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓реНрдкреЛрдВ рдХреЛ рдЬрдЧрд╣ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдлрд┐рдХреНрд╕ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ..
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реЛрдирд╛рд░ рдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЛрдб рдЧрдВрдз рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡реИрдз рдЕрдиреБрд░реЛрдз рд╣реИ рдХреНрдпреЛрдВрдХрд┐ tslint рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдФрд░ рдкрде рдПрдХ рд╡реИрдз (рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг) рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИрдВред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ package.json
рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рд╕реА рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ tslint.json
?
- web
- package.json
- ClientApp
- tslint.json
рдореИрдВ рдПрдХ рд╕рдорд╛рди рд╕реЗрдЯрдЕрдк рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рд▓рдЧрднрдЧ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп?
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рд╣реИ рд╡рд╣ рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
"no-implicit-dependencies": [true, ["src", "app", "~"]]
рдпрд╣ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдкрдереЛрдВ рдХреЛ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рджреЛрд╣рд░рд╛рд╡ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИред
рд╣рдордореЗрдВ рд╕реЗ рдЬреЛ рдХрд╕реНрдЯрдо рдкрде рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ @
рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди #4192 рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЙрдард╛рдпрд╛ рд╣реИ
"no-implicit-dependencies": [true, ["@src", "@app", "~"]]
@ifiokjr рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ @
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдЖрдпрд╛рдд @/components
рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рдерд╛
рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ @
рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА @/components
рдмрдЬрд╛рдп рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдкреВрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ @
рдкрд╣рд▓реЗред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЙрдкрдирд╛рдо рдХреЛ ~
рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдиреЗ tslint рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдкрдВрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдирд┐рдпрдо рддрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред
рд╣рдорд╛рд░реЗ tsconfig.json рдореЗрдВ, рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
рддрдм рд╣рдо рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП (рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ tsconfig.json рдлрд╝рд╛рдЗрд▓)ред
рдореИрдВ рдЗрд╕ рдирд┐рдпрдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ред