javascript - Importarea fișierelor SVG cu TypeScript + Webpack
Am o configurație destul de simplă Webpack + TypeScript și încerc să import svg-uri. Folosesc svg-sprite-loader și funcționează bine dacă require() svg-urile mele astfel:
require('./assets/alert.svg')
--
Totuși, aș prefera să folosesc următoarele:
import alert from './assets/alert.svg'
Cu asta, primesc următoarea eroare:
TS2307: Cannot find module './assets/alert.svg'.
Am un fișier custom.d.ts în rădăcina proiectului meu (după ce am citit asta: https://webpack.js.org/guides/typescript/#importing-other-assets). Arată astfel:
declare module '*.svg' {
const content: any;
export default content;
}
Al meu tsconfig arată astfel:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"lib": ["es6", "dom"]
},
"exclude": [
"**/*.spec.ts"
]
}
Și, în final, configurația mea webpack include:
module: {
rules: [
{
test: /\.ts$/,
use: `awesome-typescript-loader`
},
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader'
}
]
}
Încerc să înțeleg cum intervine fișierul custom.d.ts. Trebuie să adaug ceva în tsconfig?
De asemenea, pentru versiuni, folosesc:
- Webpack @ 2.5.0
- TypeScript @ 2.4.0
- svg-sprite-loader @ 3.6.2
- awesome-typescript-loader @ 3.1.2
Răspuns #1
Încercați să adăugați
"files": [
"custom.d.ts"
]
la tsconfig.json-ul tău
Răspunsul #2
Poți specifica un typeRoot în fișierul tău tsconfig.json indicând locația fișierului custom.d.ts.
