Плагин Browserify Transform для оценки IIFE и замены его результатом во время связки - PullRequest
0 голосов
/ 08 мая 2018

Ну, я думаю, что я хочу немного продвинуться, позвольте мне объяснить:

Например, плагин преобразования brfs заменяет каждый вызов fs.readFileSync на фактическое содержимое целевого файла. Он заменяется во время процесса обзора.

Я ищу аналогичную вещь, но вместо того, чтобы заменить вызов нативной функции, я хочу, чтобы он запускал некоторый IIFE через контекст узла и заменял его встроенный код своим результатом.

Пример:

let slideList = (
    function thatWillBeRunIntoBrowserify(){ 
        return fs.readdirSync(__dirname); //__dirname, in this context, is the directory of this file, ie: the file where this code is written.
    })();
let anotherExample = (function thatAlsoWillBeRunIntoBrowserify(){ return Math.PI * 20 * 20; })();

Перед связкой я бы хотел, чтобы она преобразовалась в:

let slideList = ["frontpage.svg", "preface.svg", "credits.svg", "other files into the folder..."];
let anotherExample = 1256.6370614359173;

Есть ли какой-нибудь плагин Transform для этого или что-то в этом роде?

Редактировать: Вышеупомянутый код является частью большего кода, он находится внутри модуля Node.js, который возвращает функцию, и внутри этой функции будут либо IIFE, которые я хочу запустить в клиенте (браузер) и IIFE, которые должны быть запущены во время просмотра пакета. Prepack.io имеет сторонний модуль Browserify (prepackify), однако, насколько я его протестировал, он фактически портит весь код. Весь код, но конкретные IIFE должны быть неповрежденными.

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете использовать препак

, который превратится:

let anotherExample = (function thatAlsoWillBeRunIntoBrowserify(){ return Math.PI * 20 * 20; })();

или просто

let anotherExample = Math.PI * 20 * 20;

В

let anotherExample = 1256.6370614359173;

попробуйте здесь: https://prepack.io/repl.html#OYGw9gRghiB0UDswBcAWBTATgUQB5QFsAHEdAAgF4yyBZKNWABQEkyAqMgJgAZ2vuA3EA

...