javascript - Hur markerar man beroenden som externa i WebPack när de inte importeras med '*'?
Hur kan jag specificera office-ui-fabric-react som ett externt beroende i Webpack?
Jag importerar beroenden som nedan i mitt TypeScript-projekt (Obs: att jag bara importerar de moduler jag behöver) -
import { Dialog, DialogType, DialogFooter } from 'office-ui-fabric-react/lib/Dialog';
import { PrimaryButton, DefaultButton } from 'office-ui-fabric-react/lib/Button';
Aktuell extern konfiguration i webpack.config.js som fungerar för React & ReactDOM men inte fungerar för Fabric.
externals: {
"react": "React",
"react-dom": "ReactDOM",
"office-ui-fabric-react": "office-ui-fabric-react"
}
Behöver jag specificera det på något annat sätt när jag bara importerar valda moduler?
Svar #1
Fältet externals i webpack fungerar på följande sätt: om du anger office-ui-fabric-react som extern, kommer endast importen till office-ui-fabric-react att markeras som extern.
I ditt fall gör du en djup import (varför?) till office-ui-fabric-react/lib/Dialog så det matchar inte office-ui-fabric-react och därför betraktades det inte som externt.
Du har 2 alternativ:
- Definiera var och en av de djupa importerna som externa, du kan använda funktionssyntaxen för externa
- Använd
import {Dialog} from 'office-ui-fabric-react'
Exempel :
Användning av sådan import
import get from 'lodash/get';
kommer kräva att du lägger till lodash/get till externals, med lodash är det enkelt,
...
externals: {
'lodash/get': '_.get'
}
...
Vanligtvis är det inte en bra praxis att lägga interna saker som externa.
Svar #2
Lägger upp hur externa såg ut efter att ha tillämpat förslaget från @felixmosh som löste problemet för mig. Nu läggs inga av office-ui-fabric-react-komponenterna till i den slutliga JS-filen.
externals: {
"react": "React",
"react-dom": "ReactDOM",
'office-ui-fabric-react/lib/Dialog': '_.Dialog, _.DialogType, _.DialogFooter',
'office-ui-fabric-react/lib/Button': '_.PrimaryButton, _.DefaultButton'
}
