So che questo è un vecchio post, ma ho pensato che sarebbe stato utile menzionare che il caricatore di script webpack potrebbe essere utile anche in questo caso. Dai documenti del webpack:
"script: esegue un file JavaScript una volta nel contesto globale (come nel tag script), i requisiti non vengono analizzati."
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
L'ho trovato particolarmente utile durante la migrazione di processi di compilazione precedenti che concatenano file di fornitori JS e file di app insieme. Un avvertimento è che il caricatore di script sembra funzionare solo tramite il sovraccaricorequire()
e non funziona per quanto posso dire essendo specificato all'interno di un file webpack.config. Sebbene molti sostengano che il sovraccarico require
sia una cattiva pratica, può essere abbastanza utile per conciliare il fornitore e lo script dell'app in un unico pacchetto e allo stesso tempo esporre JS Globals che non devono essere spessorati in bundle webpack aggiuntivi. Per esempio:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
Ciò renderebbe $ .cookie, History e moment disponibili a livello globale all'interno e all'esterno di questo bundle e raggrupperebbe queste librerie del fornitore con lo script main.js e tutti i suoi require
file d.
Inoltre, utile con questa tecnica è:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
che sta usando Bower, esaminerà il main
file in ogni require
d librerie package.json. Nell'esempio precedente, History.js non ha un main
file specificato, quindi è necessario il percorso del file.
new
prima diwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html