Лучший способ реализовать настройки пакета NPM - PullRequest
0 голосов
/ 19 апреля 2020

Я создал этот NPM пакет, в настоящее время есть три функции, и после импорта пакета вы можете изменить три внутренних массива, используя функции получения и установки (что-то вроде getFaces() и setFaces(). Я также хотел добавить настройки вероятности, сначала я просто собирался установить их с помощью параметров функции и сделать их необязательными с помощью TypeScript:

uwuifySentence(sentence: string, first: number = 1, second: number = 1, third: number = 1): string {
    // Do something with these variables
}

Но с другой стороны, я также хотел бы быть возможность использовать один параметр, чтобы установить все эти 3, так что теперь мы получаем что-то вроде этого:

uwuifySentence(sentence: string, all: number = 1, first: number = 1, second: number = 1, third: number = 1): string {
    // Do something with these variables
}

Но теперь неудобно вызывать функцию, поскольку мне всегда нужно что-то передавать в all параметр, когда я хочу изменить first, second или third. Решением для этого (я думаю) было бы передать объект, содержащий настройки, но я не помню, чтобы это было сделано. 1015 * Twitter пакет имеет нечто подобное, но они просто передают настройки в конструктор класса.

Переписать не составит труда т. е. мой пакет для экспорта одного класса, где я могу передать объект настроек и просто сделать текущие экспортируемые функции некоторыми методами класса. Но тогда, когда кто-то хочет использовать только одну функцию, не заботясь о параметрах:

import { uwuifySentence } from 'uwuifier';

console.log(uwuifiySentence('Hey! How you've been?'));

становится:

import { Uwuifier } from 'uwuifier';
const uwufier = new Uwuifier();

console.log(uwuifier.uwuifyString('Hey! How you've been?'));

Но, насколько я знаю, нет и того, и другого. экспортировать класс с параметром настроек И экспортировать методы без класса (это также кажется очень запутанным, так что, может быть, лучше, если нет пути). Так что мне просто интересно, как лучше / лучше всего справиться с этим при создании пакета?

И хотя мне интересно, каков лучший способ go об этом, я тоже не уверен Если текущая установка с внутренними массивами, каждый с сеттерами и геттерами, является лучшим способом обработки этого аспекта пакета ..? Возможно, их можно будет отредактировать после того, как я экспортирую класс и установлю их как publi c properties.

...