나는 이것이 오래된 포스트라는 것을 알고 있지만,이 경우에도 웹팩 스크립트 로더가 유용 할 수 있다는 것을 언급하는 것이 유용 할 것이라고 생각했습니다. 웹팩 문서에서 :
"스크립트 : 스크립트 태그와 같이 전역 컨텍스트에서 JavaScript 파일을 한 번 실행합니다. require는 구문 분석되지 않습니다."
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
JS 공급 업체 파일과 앱 파일을 함께 연결하는 이전 빌드 프로세스를 마이그레이션 할 때 특히 유용합니다. 경고의 한마디는 스크립트 로더 require()
가 오버로딩을 통해서만 작동하는 것처럼 보이며 webpack.config 파일 내에서 지정하여 알 수있는 한 작동하지 않는다는 것입니다. 많은 사람들이 오버로딩 require
이 나쁜 관행 이라고 주장하지만, 하나의 번들에서 공급 업체와 앱 스크립트를 연결하는 동시에 추가 웹팩 번들로 shimm 할 필요가없는 JS Globals를 노출하는 데 매우 유용 할 수 있습니다. 예를 들면 :
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
이렇게하면 $ .cookie, History 및 moment를이 번들 내부와 외부에서 전역 적으로 사용할 수 있으며 이러한 공급 업체 라이브러리를 main.js 스크립트 및 모든 require
d 파일 과 함께 번들로 제공 합니다.
또한이 기술에 유용한 것은 다음과 같습니다.
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
Bower를 사용하는 main
각 require
d 라이브러리 package.json 의 파일을 살펴 봅니다 . 위의 예에서 History.js에는 main
지정된 파일 이 없으므로 파일 경로가 필요합니다.
new
하기 전에webpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html