Помощники руля свертывания - PullRequest
5 голосов
/ 05 июня 2019

Я пытаюсь использовать свертку в моем проекте, в котором я также использую рули.В частности, я использую простой помощник для одного из шаблонов.Я нашел 3 разных плагина для руля и перепробовал их все.Самое близкое, что я получил, чтобы это работало - это использование rollup-plugin-handlebars-plus.

Вот rollup.config.js:

import resolve from 'rollup-plugin-node-resolve';
import handlebars from 'rollup-plugin-handlebars-plus';
// import handlebars from 'rollup-plugin-handlebars';
///import handlebars from 'rollup-plugin-hbs';
import commonjs from 'rollup-plugin-commonjs';


export default {
    // tell rollup our main entry point
    input:'assets/js/exp.js',
    output: {
      name: 'rootmont',
      file: 'build/js/main.min.js',
        format: 'iife',
        globals: {
            jquery: '$'
        }
        // format: 'umd'
    },
    plugins: [
        resolve({
            // pass custom options to the resolve plugin
            customResolveOptions: {
              moduleDirectory: [ 'node_modules']
            }
        }),
        commonjs({
            include: 'node_modules/**',
        }),
        handlebars({
            helpers:['assets/js/handlebarsHelpers.js'],
             // templateExtension: '.html'
        })
    ],
};

Вот handlebarsHelpers.js:

export default function(Handlebars) {
    Handlebars.registerHelper( 'percent', function( number ) {
        let num = number * 100;
        num = Math.round( num * 100 ) / 100;
        return num;
    });
}

А вот pct.hbs:

<div>
{{#each data}}
<tr>
    <td>
        {{@key}}
    </td>
    <td>
        {{percent this}}%
    </td>
</tr>
{{/each}}
</div>

После того, как я введу rollup -c в командной строке, вы увидите:

assets / js / exp.js → build / js / main.min.js ...(!) Неразрешенные зависимости https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency assets / js / handlebarsHelpers.js (импортировано assets / hbs / pct.hbs) (!) Отсутствует имя глобальной переменной Используйте output.globals для указания имен глобальных переменных браузера, соответствующих внешним модулямassets / js / handlebarsHelpers.js (угадывая 'Helpers0')

В нем говорится, что handlebarsHelpers.js импортируется pct.hbs, но это не так, но, возможно, это результат предварительной обработки.Похоже, мне нужно явно импортировать handlebarsHelpers.js куда-то, чтобы получить свертку, чтобы положить его в комплекте.Но это создает свои собственные проблемы, например, необходимость импортировать руль и библиотеку fs, что кажется неправильным способом.

Кто-нибудь знает, что мне здесь не хватает?

1 Ответ

2 голосов
/ 13 июня 2019

Попробуйте сделать что-то подобное в вашем rollup.config.js:

{
  external: [
    'assets/js/handlebarsHelpers.js'
  ],
  output: {
    globals: {
      'assets/js/handlebarsHelpers.js': 'Helpers0',
    },
    ...
  },
  ...
}

Было бы неплохо иметь репо для воспроизведения, хотя ...

...