Zaskakuję problem z Browserify, dotyczące wtyczek jQuery. Ponieważ mam wiele pakietów dla oddzielnych pod-aplikacji, mam pewne globalne biblioteki jako znaczniki <script>
w moim kodzie HTML, aby zapobiec powtórzeniu.Fałszywe globalne jQuery z browserify-shim? (Nie można znaleźć modułu "jquery")
Używam gulp
, browserify-shim
i babelify
do tworzenia moich pakietów.
ciągu package.json
:
"dependencies": {
"jquery.cookie": "^1.4.1",
...
},
"browserify-shim": {
"jquery": "global:jQuery",
...
},
"browserify": {
"transform": [
"browserify-shim"
]
}
ciągu base.html
: (w produkcji będą one CDN linki)
<!--[if lt IE 9]><script src="/bower_components/jquery-legacy/jquery.min.js"></script><![endif]-->
<!--[if gte IE 9]><!-->
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<!--<![endif]-->
W jednym z moich plików źródłowych: Komunikat
import $ from 'jquery'; // this works
import 'jquery.cookie'; // this crashes browserify
błędzie:
Error: Cannot find module 'jquery' from '/path/to/node_modules/jquery.cookie'
jQuery to nie zainstalowane z npm, ponieważ nie chcę, aby było ono wtaczane do moich pakietów.
Zgaduję, że problem polega na tym, że jest wywołanie require('jquery')
w ramach jquery.cookie.js
, które nie zostało rozwiązane.
Jak "sfałszować" istnienie globalnej instancji jQuery do wtyczki z browserify-shim?
NB: This solution nie spełnia moich potrzeb, jak jQuery będzie wdrażany w wielu wiązek.
W wierszu poleceń (lub uruchom skrypt NPM) byłoby to: 'browserify -t [browserify-podkładka --global ] index.js' (wymaga wpisu "" browserify-shim ": {...}' w pakiecie.json). – smhg
@azz @smhg Dzięki za to. Czy wiesz, gdzie jest udokumentowana flaga '--global'? To działało dla mnie, ale nie mogę go znaleźć w dokumentach [tutaj] (https://www.npmjs.com/package/browserify) lub [tutaj] (https://www.npmjs.com/package/browserify -shim). –