Tôi biết đây là một bài đăng cũ nhưng tôi nghĩ rằng sẽ hữu ích khi đề cập rằng trình tải tập lệnh webpack cũng có thể hữu ích trong trường hợp này. Từ tài liệu webpack:
"script: Thực thi một tệp JavaScript một lần trong ngữ cảnh chung (như trong thẻ script), các yêu cầu không được phân tích cú pháp."
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
Tôi nhận thấy điều này đặc biệt hữu ích khi di chuyển các quy trình xây dựng cũ hơn kết hợp các tệp của nhà cung cấp JS và tệp ứng dụng với nhau. Một lời cảnh báo là trình tải tập lệnh dường như chỉ hoạt động thông qua quá tải require()
và không hoạt động xa như tôi có thể nói bằng cách được chỉ định trong tệp webpack.config. Mặc dù, nhiều người cho rằng quá tải require
là một phương pháp không tốt, nhưng nó có thể khá hữu ích để kết hợp nhà cung cấp và tập lệnh ứng dụng trong một gói, đồng thời để lộ JS Globals mà không cần phải ghép vào các gói webpack bổ sung. Ví dụ:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
Điều này sẽ làm cho $ .cookie, History và moment có sẵn trên toàn cầu bên trong và bên ngoài gói này, đồng thời gói các lib của nhà cung cấp này bằng tập lệnh main.js và tất cả require
các tệp d.
Ngoài ra, hữu ích với kỹ thuật này là:
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
đang sử dụng Bower, sẽ xem xét main
tệp trong mỗi require
thư viện d package.json. Trong ví dụ trên, History.js không có main
tệp được chỉ định, vì vậy đường dẫn đến tệp là cần thiết.
new
trướcwebpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html