gpt4 book ai didi

javascript - 是否可以包含取决于用户是否安装了某个软件包的功能(可选功能)

转载 作者:行者123 更新时间:2023-11-30 09:24:08 25 4
gpt4 key购买 nike

我正在编写一个模块,如果用户在他的项目中安装了 react-intl,我希望导出具有翻译功能的高级组件。

这样我就不必维护我的组件的两个版本以避免安装警告。

我一直在尝试使用 optionalDepenceny,但是当他安装我的包时,它们安装在用户的项目中。

通常,这是我要导入的源

/**
*
* ToggleOption
*
*/

import React from 'react';
import PropTypes from 'prop-types';
import Option from 'bootstrap-styled/lib/Option';

let injectIntl;
let intlShape;

// this make react-intl optional to our component and our module
try {
const reactIntl = require('react-intl'); // eslint-disable-line
injectIntl = reactIntl.injectIntl; // eslint-disable-line
intlShape = reactIntl.intlShape; // eslint-disable-line
} catch (er) {
injectIntl = null;
intlShape = null;
}

/**
* This component is automatically used when using `<Toggle />`
* If you need a different option tag, instead just pass the prop `optionTag` of `<Toggle />`.
*/
const ToggleOption = ({
tag: Tag,
value,
message,
intl,
}) => (
<Tag value={value}>
{message && intl ? intl.formatMessage(message) : value}
</Tag>
);

ToggleOption.defaultProps = {
tag: Option,
};

/* eslint-disable react/require-default-props */
ToggleOption.propTypes = {
/**
* Replace the default component tag by the one specified. Can be:
*/
tag: PropTypes.oneOfType([
PropTypes.string,
PropTypes.element,
PropTypes.func,
]),
/**
* The value
*/
value: PropTypes.string.isRequired,
/**
* react-intl messages (optional)
*/
message: PropTypes.object,
};

let exported = ToggleOption; // eslint-disable-line import/no-mutable-exports

if (intlShape) {
/** @ignore */
ToggleOption.propTypes.intl = intlShape.isRequired;
exported = injectIntl(ToggleOption);
}

export default exported;

有没有办法配置我的模块来做到这一点?

最佳答案

package.json 中的可选依赖项始终默认安装。为了避免它们,你必须安装:

npm install [PACKAGE] --no-optional

例如,您可以在描述中注明,就像我一样:https://github.com/Llorx/updated-require

PS:你的代码没问题。

关于javascript - 是否可以包含取决于用户是否安装了某个软件包的功能(可选功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49891169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com