什么是可选依赖关系,何时应该使用它们
什么是可选依赖关系?
依赖关系是项目在正常运行时所依赖的库。
可选依赖关系指的是在安装应用程序或项目时不会导致失败的依赖关系,因为如果它们失败,npm会忽略它们。无论这些依赖关系是否存在,应用程序仍然能够正常工作。
何时应该使用它们?
- 对于可能在每台机器上无法正常工作的依赖关系,可以将其作为备选项。
- 这些依赖关系主要用于减少库之间的传递负担。例如:如果一个库适用于多种不同的数据库类型,但你通常只需要其中一种,那么可以将库依赖的依赖关系标记为可选,以便用户可以提供他们偏好的依赖关系。
- 将依赖关系添加为可选依赖关系可以加快Node项目的安装过程。
为了更好地理解可选依赖关系,考虑以下示例。
假设我们想将 Colors 包作为依赖关系包含在内,以帮助我们在终端中接收并样式化多个日志。当你在Node.js中使用console.log()时,如果你的终端有黑色背景,输出通常会是白色;如果你的终端有浅色背景,输出通常会是黑色。如果你只是简单地使用console.log()打印几条简短的消息,你不用担心任何问题。但是,如果你打印大量的文本,阅读起来可能会很困难。所以,我们如何区分控制台上的文本?答案是我们可以使用多颜色的控制台输出,以便程序员能够理解控制台语句。
现在,这个包并不一定在所有机器上都能有效工作,或者用户也不一定想要使用这个包来样式化日志。在这种情况下,Colors将成为可选依赖关系。这个依赖关系不应该影响应用程序的工作,因为它的目的是显示日志。
如何将依赖关系安装为可选依赖关系: 我们可以使用以下命令将依赖关系安装为可选依赖关系:
npm i package_name --save-optional
npm是否安装可选的依赖: npm将自动安装所有列为依赖项的软件包。
将Colors包作为可选依赖项安装: 作为示例,我们将安装Colors包作为可选依赖项。
步骤1: 初始化npm
创建一个新的项目目录,打开终端,并使用以下命令来初始化npm。
npm init -y
步骤2: 将Colors软件包安装为可选依赖项。
npm i colors --save-optional
在package.json中,你的包将在“optionalDependencies”关键字下列出。
注意: 然而,并非所有的依赖项都可以设为可选。当一个依赖项被设为可选时,你的程序仍然需要处理它的缺失情况。
步骤3: 创建一个名为“app.js”的新文件,并在其中写下以下代码。
要使用colors模块,首先我们需要将它导入到我们的app.js文件中,就像我们对其他依赖项所做的那样。
const colors = require('colors');
然后,我们将使用colors.setTheme为错误和警告设置主题,并将一个对象传递给它。
colors.setTheme({
warn: 'yellow',
error: 'red'
});
现在我们准备好使用不同的样式进行工作:
console.log('Enter your text'.color/pattern)
示例: 我们将使用各种颜色和背景。我们的文本将是粗体、斜体,并使用彩虹等图案。随机图案每次生成不同的颜色和图案。彩虹图案产生彩虹色的文本。
- app.js
// Using colors package as an optional dependency
const colors = require('colors');
// Setting themes
colors.setTheme({
warn: 'yellow',
error: 'red'
});
// Outputs a rainbow colored text
console.log('-----------------------------------------'.rainbow);
// Outputs a yellow , bold text
console.log('Hello,geeks'.yellow.bold);
// Outputs a black colored text with a bright green background
console.log('Welcome to GeeksforGeeks!!'.black.bgBrightGreen);
// Outputs a green underlined text
console.log('A Computer Science Portal for geeks'.green.underline);
// Outputs a italicised cyan colored text
console.log('You can watch tutorials.'.cyan.italic);
// Outputs an error
console.log("Oops! Currently , you don't have any courses in your account".error);
// Outputs a bold and bright magenta colored text
console.log("You can read articles".brightMagenta.bold);
// Outputs a rainbow colored text
console.log('CONTRIBUTE'.rainbow);
// Outputs a warning
console.log('Please login to contribute'.warn);
// Outputs a random pattern
console.log('Thanks for visiting gfg'.random);
// Outputs a rainbow colored text
console.log('-----------------------------------------'.rainbow);
运行应用程序的步骤: 使用以下命令运行应用程序:
node app.js
输出:
我们通过以区分方式显示,使我们的输出日志更易读。
当我们希望使用一个依赖项但又不希望在安装失败时导致应用程序崩溃时,我们可以将其放置在可选依赖项中。尽管它记录了一些语句,但在没有Colors包的情况下,应用程序可能不会崩溃。