Используйте rollup.js с адаптером jQuery в том же файле - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть основная функция для экспорта и адаптер jQuery в одном файле.И я бы хотел сохранить их в таком виде.

Есть ли способ с помощью rollup.js создать файл комплекта, совместимый с AMD, CommonJS и браузерами?

Сейчас у меня есть этот тестовый файл:

//src/foo.js
export default function(){
    function initialise() {
        var TEST = {};
        TEST.version = '1.0.0';
        TEST.hello = function(){
            console.log("hello man!!");
        };

        return TEST;
    }

    //jQuery adapter
    (function($){
        $.fn.demo = function(options) {
            $.fn.demo.test = 'test';
        };
    })(jQuery);

    return initialise;
};

И я попытался использовать эту конфигурацию накопительного пакета:

// rollup.config.js
export default {
  input: 'src/main.js',
  output: {
    file: 'dist/bundle.js',
    format: 'umd',
    globals: {
        $: '$'
    }
  }
};

Однако я не могу получить доступ к $.fn.demo:

// src/main.js
import jQuery from 'jQuery';
import pepe from './foo.js';


console.log(jQuery);    //<--- undefined
console.log($);         //<--- undefined

console.log("-- JS--");
console.log(pepe);      //<---- working fine
console.log("-- $.fn.demo --");
console.log($.fn.demo); //<--- undefined

1 Ответ

0 голосов
/ 28 сентября 2018

Обратите внимание, что в вашем main.js файле pepe есть функция (которую вы экспортировали из foo), и вы не вызывали ее, следовательно, $.fn.demo равно undefined.Чтобы запустить адаптер, необходимо вызвать pepe();.

См. Также , как сообщить Rollup, что jquery является внешним, а идентификатор модуля jquery равен глобальной переменной $ .

...