javascript - Hvordan ændrer man dynamisk importstier i webpack?
Jeg har et sæt af eksporter, som jeg normalt importerer fra en mappe:
import { myThing } from 'path/to/dir/es5/things'
Men hvis jeg kører webpack med en specifik NODE_ENV indstillet, vil jeg gerne have, at roden af alle sådanne imports behandles som es6 i stedet:
import { myThing } from 'path/to/dir/es6/things'
Hvordan kan jeg gøre dette, f.eks. få webpack til dynamisk at løse path/to/dir/es5/* til path/to/dir/es6/*?
Svar #1
Du kan bruge et alias til det.
For eksempel kan du i din webpack-konfiguration bruge noget som:
const alias = {};
if (NODE_ENV === ...) {
alias['path/to/dir/es5'] = 'path/to/dir/es6'
}
Yderligere læsning: https://webpack.js.org/configuration/resolve/
Svar #2
Her er min måde at håndtere det her på.
Indbygget DefinePlugin kombineret med env-variabel.
i din package.json, tilføj miljøvariabel på følgende måde
"script": "... webpack --env.SOME_ENV_VAR=value -p"
Tilføj derefter din DefinePlugin inde i din webpack.config-fil
plugins: [
...
new webpack.DefinePlugin({
SOME_ENV_VAR: env.SOME_ENV_VAR,
}),
...
]
Så kan du bruge SOME_ENV_VAR som en global variabel i din kode
/* global SOME_ENV_VAR */
const esX = SOME_ENV_VAR === value ? 'es5' : 'es6';
myThing = require(`path/to/dir/${esX}/things`)
