Поддерживает ли накопительный пакет машинописный текст в файле конфигурации накопительного пакета?

Кажется, мы можем использовать машинописный текст для написания файла конфигурации накопительного пакета. Скажем, я могу создать файл с именем rollup.config.ts с содержимым:

import typescript from 'rollup-plugin-typescript2';

export default {
  input: 'main.ts',
  plugins: [typescript()],
  output: {
    file: 'bundle.js',
    format: 'cjs',
  },
  external: ['lodash']
}

Это работает, если я вызываю свертку как rollup -c rollup.config.ts.

Но если я использую в нем несколько типов:

import typescript from 'rollup-plugin-typescript2';
import {RollupFileOptions} from "rollup";

const config: RollupFileOptions = {
  input: 'main.ts',
  plugins: [typescript()],
  output: {
    file: 'bundle.js',
    format: 'cjs',
  },
  external: ['lodash']
}

export default config;

Он будет сообщать об ошибках, например:

$ rollup -c rollup.config.ts
[!] Error: Unexpected token
rollup.config.ts (4:12)
2: import {RollupFileOptions} from "rollup";
3: 
4: const config: RollupFileOptions = {
                 ^

Можно ли заставить его работать? Я пробовал использовать ts-node с


person Freewind    schedule 15.02.2019    source источник
comment
Вам удалось найти решение? Я столкнулся с аналогичными проблемами (не могу импортировать другой файл ts)   -  person Moustachiste    schedule 15.03.2019
comment
@Moustachiste Еще нет, пока мне нужно использовать rollup.config.js   -  person Freewind    schedule 21.05.2019
comment
Я увидел, что это не отслеживается на веб-сайте накопительного пакета, поэтому я открыл проблему github.com/rollup/rollup / issues / 2879   -  person k2snowman69    schedule 28.05.2019


Ответы (4)


Пока же, хотя он еще не поддерживается, JSDoc может оказаться полезным для проверки типа конфигурации накопительного пакета. (Он работает только в редакторе, поддерживающем JSDoc. Например, VSCode).

/** @type {import('rollup').RollupOptions} */
const options = {
  ...
};

export default options;
person Rannie Aguilar Peralta    schedule 02.08.2019
comment
tyck, кажется, не работает должным образом. const options = { output: { dir: 42 } }; dir должен быть string, это number, но в vscodium нет ошибок. - person chpio; 11.06.2021

Вы можете создать отдельный rollup.config.js, который будет выглядеть так:

require('ts-node').register({
  compilerOptions: {
    module: 'CommonJS'
  },
  // and other tsconfig.json options as you like
});

module.exports = require('./rollup.config.ts');

Вам, конечно же, понадобится npm install --save-dev ts-node. Затем бегите npx rollup -c, и вы отправляетесь на скачки.

person Daniel Moore    schedule 30.04.2020

Для самой быстрой компиляции используйте это:

npm install sucrase -D

А в вашем rollup.config.js сделайте следующее:

require('sucrase/register')
module.exports = require('./rollup.config.ts')

https://github.com/alangpierce/sucrase

person aleclarson    schedule 22.04.2021

В Rollup v2.52.0 можно указать параметр --configPlugin как:

rollup --config rollup.config.ts --configPlugin typescript
person Sid Vishnoi    schedule 30.06.2021