2016-04-19 11 views
1

У меня есть файл, который требует модуля инсталлировано от НОГО:Шиммирование JQuery узлов для browserify

-- login.js -- 
require('jquery-form'); 

модуля опирается на Jquery переменного существующей в window сфере, но, как я browserifying это, я понимаю, Мне нужно закрепить это. Таким образом, я установил browserify-регулировочной шайбой и я использую его, как это (от package.json):

"browserify-shim": { 
    "./node_modules/jquery/dist/jquery.js": "jQuery" 
}, 

однако, когда jquery-form работает, jQuery не определен. что мне не хватает?

ответ

0

Try:

{ 
    "browser": { 
    "jquery": "./node_modules/jquery/dist/jquery.js" 
    }, 
    "browserify-shim": { 
    "jquery": "$" 
    } 
} 

и когда вам требуется:

var $ = require('jquery'); 
+0

ключевое слово «браузер» позволяет мне поменять файл, который экспортирует пакет jquery, когда он мне нужен? поэтому в этом случае я говорю, чтобы использовать ../dist/jquery.js всякий раз, когда требуется пакет jquery. но это файл, который находится в «main» package.json, и поэтому мне не нужно ключевое слово «браузер» (поэтому я его не включил) - правильно? или я не прав? – ekkis

+0

также, если я 'var $ = require ('jquery')' (я полагаю, это нужно сделать прямо перед тем, как я 'require ('jquery-form')'), то что такое функция '' browserify-shim ": {" jquery ":" $ "}'? – ekkis

+0

в любом случае, я попробовал, но безрезультатно. модуль 'jquery-form' должен видеть' jQuery' вместо '$', поэтому я попробовал '' browserify-shim ': {"jquery": "jQuery"} 'без успеха. Я также попробовал 'jQuery = require ('jquery')' (вместо 'var jQuery ...') мышление, которое поместило бы его в глобальную область действия, но оно все равно не сработает. что мне не хватает? – ekkis

1

Вы должны "Shim" Jquery как зависимость jquery-form. Если все они установлены через npm, нет необходимости в директиве browser. Потому что jquery-form не имеет директивы main в своем package.json, вам нужно добавить директиву browser, чтобы показать, что браузер должен включить в ваш комплект.

"browserify-shim": { 
    "jquery-form": { 
    "depends": ["jquery"] 
}, 
"browserify": { 
    "transform": [ "browserify-shim" ] 
}, 
"browser": { 
    "jquery-form": "./node_modules/jquery-form/jquery.form.js" 
}, 

См. this section документов.

+0

Это любопытная конструкция (в зависимости от предложения): '' jquery: $ "' - как это работает? Кроме того, мне нужно возиться с '$'? потому что _jquery-form_ полагается на 'jQuery' не на' $ ' – ekkis

+0

@ekkis, вы правы - в этом случае вам не нужно экспортировать' jQuery' как '$' вообще и может просто зависеть от 'jquery' в ваша 'зависит'. Я сделал быстрый тест, и вам нужна директива 'browser' из-за объяснения, которое я добавил выше. – YPCrumble

+0

В моей копии формы запроса есть основная директива, которая указывает на './Jquery.form.js' - я использую npmVersion 1.3.24. Интересно, что я также вижу 'зависимости: {jquery:"> = 1.5 "}' в 'package.json', так что мне еще нужно указать зависимость? – ekkis