Wiem, że to stary post, ale pomyślałem, że warto wspomnieć, że moduł ładujący skrypt pakietu webpack może być przydatny również w tym przypadku. Z dokumentów pakietu internetowego:
„script: jednorazowo wykonuje plik JavaScript w kontekście globalnym (np. w tagu skryptu), wymagania nie są analizowane”.
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
Zauważyłem, że jest to szczególnie przydatne podczas migracji starszych procesów kompilacji, które łączą ze sobą pliki dostawców JS i pliki aplikacji. Ostrzeżenie jest takie, że moduł ładujący skrypt wydaje się działać tylko przez przeciążenie require()
i nie działa tak daleko, jak mogę to stwierdzić, ponieważ jest określony w pliku webpack.config. Chociaż wielu twierdzi, że przeciążanie require
jest złą praktyką, może być całkiem przydatne do łączenia skryptu dostawcy i aplikacji w jednym pakiecie, a jednocześnie ujawniania JS Globals, których nie trzeba umieszczać w dodatkowych pakietach webpack. Na przykład:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
Spowodowałoby to, że $ .cookie, historia i moment byłyby globalnie dostępne w tym pakiecie i poza nim oraz wiązałyby te biblioteki dostawców ze skryptem main.js i wszystkimi jego require
plikami d.
Przydatne w tej technice jest również:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
który używa Bower, przejrzy main
plik w każdej z require
bibliotek pakiet.json. W powyższym przykładzie History.js nie ma main
określonego pliku, więc ścieżka do pliku jest niezbędna.
new
przedwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html