Ich weiß, dass dies ein alter Beitrag ist, dachte aber, es wäre nützlich zu erwähnen, dass der Webpack-Skriptlader auch in diesem Fall nützlich sein kann. Aus den Webpack-Dokumenten:
"Skript: Führt eine JavaScript-Datei einmal im globalen Kontext aus (wie im Skript-Tag), erfordert, dass sie nicht analysiert werden."
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
Ich fand dies besonders nützlich, wenn ältere Build-Prozesse migriert werden, die JS-Herstellerdateien und App-Dateien zusammenfassen. Ein Wort der Warnung ist, dass der Skriptlader nur durch Überladung zu funktionieren scheint require()
und nicht funktioniert, soweit ich dies anhand einer webpack.config-Datei feststellen kann. Obwohl viele argumentieren, dass Überladung require
eine schlechte Praxis ist, kann es sehr nützlich sein, Anbieter- und App-Skripte in einem Bundle zusammenzufassen und gleichzeitig JS Globals verfügbar zu machen, die nicht in zusätzliche Webpack-Bundles eingeteilt werden müssen. Beispielsweise:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
Dies würde $ .cookie, History und moment innerhalb und außerhalb dieses Bundles global verfügbar machen und diese Herstellerbibliotheken mit dem Skript main.js und allen require
d-Dateien bündeln .
Nützlich bei dieser Technik ist auch:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
Wenn Sie Bower verwenden, wird die main
Datei in jeder require
d-Bibliothek package.json angezeigt. Im obigen Beispiel ist in History.js keine main
Datei angegeben, daher ist der Pfad zur Datei erforderlich.
new
vorwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html