накопление пользовательских аргументов cli для ошибок, вызываемых конфигурацией

#rollup #rollupjs

#накопительный #rollupjs

Вопрос:

У меня есть приложение, для которого требуется 3 базы микрокодов и некоторые материалы iframe postMessage.

Контролируя сборку всего этого, я стремлюсь управлять из одного файла конфигурации rollup и вводить аргументы через cli:

   "scripts": {
    "dev:child": "rollup -c rollup.config.js -w --for_type child",
    "dev:parent": "rollup -c rollup.config.js -w --for_type parent",
    "dev:sidebar": "rollup -c rollup.config.js -w --for_type sidebar",
  

Моя конфигурация rollup работает, но проблема в том, что rollup жалуется, что for_type это не распознанный аргумент.

Каков правильный способ ввода пользовательских аргументов в rollup?

Я ничего здесь не вижу: https://rollupjs.org/guide/en/#configuration-files

Ответ №1:

При экспорте функции вместо объекта в rollup.config.js , первым аргументом функции будет объект аргументов CLI. Например, если ваша конфигурация:

 export default cliArgs => {
    let build = {
        input: 'src/index.js',
        output: [/* ... */],/
        plugins: [/* ... */]
    };

    switch (cliArgs.for_type) {
        case 'child':
            // Customise build for child
            break;
        case 'parent':
            // Customise build for parent
            break;
        case 'sidebar':
            // Customise build for sidebar
            break;
        default:
            // No CLI argument
            break;
    }

    return build
};
  

Еще раз взгляните на документацию для получения дополнительной информации.

Ответ №2:

Из https://rollupjs.org/guide/en/#configuration-files

Вы даже можете определить свои собственные параметры командной строки, если вы добавите к ним префикс config:

 export default commandLineArgs => {
  if (commandLineArgs.configDebug === true) {
    return debugConfig;
  }
  return defaultConfig;
};
  

Комментарии:

1. В случае, если из этого ответа не было ясно (это было не для меня), в случае OP им нужно было бы изменить имя аргумента на --config_for_type .

2. Голос отклонен, потому что я устал от людей, публикующих ответы и учебные пособия, в которых делаются основные предположения и полностью опускаются ключевые фрагменты основополагающих знаний, о которых НЕ знал бы тот, кто все еще учится. Интернет изобилует этим дерьмовым подходом. Если вы уже нашли время, чтобы помочь, что замечательно, пожалуйста, сделайте это тщательно и включите все шаги — поставьте себя на место ученика, тщательно. Нет смысла что-либо делать, если вы не делаете это ПРАВИЛЬНО. Спасибо BlueGreenMagick!