ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

open

打开 URL、文件、可执行文件等。跨平台。

此包旨在用于命令行工具和脚本,而非浏览器。

如果你需要在 Electron 中使用,请使用 shell.openPath()

此包不提供任何安全保证。如果你传入不可信的输入,由你负责对其进行适当的清理。

为什么?

  • 积极维护。
  • 支持应用参数。
  • 更安全,因为它使用 spawn 而不是 exec
  • 修复了原始 node-open 的大部分问题。
  • 包含最新的 xdg-open 脚本,用于 Linux。
  • 支持 WSL 路径到 Windows 应用。

安装

npm install open

警告: 此包为原生 ESM,不再提供 CommonJS 导出。如果您的项目使用 CommonJS,您将不得不 转换为 ESM 或使用 动态 import() 函数。请勿就 CommonJS / ESM 相关问题提交 issue。

用法

import open, {openApp, apps} from 'open';

// Opens the image in the default image viewer and waits for the opened app to quit.
await open('unicorn.png', {wait: true});
console.log('The image viewer app quit');

// Opens the URL in the default browser.
await open('https://sindresorhus.com');

// Opens the URL in a specified browser.
await open('https://sindresorhus.com', {app: {name: 'firefox'}});

// Specify app arguments.
await open('https://sindresorhus.com', {app: {name: 'google chrome', arguments: ['--incognito']}});

// Opens the URL in the default browser in incognito mode.
await open('https://sindresorhus.com', {app: {name: apps.browserPrivate}});

// Open an app.
await openApp('xcode');

// Open an app with arguments.
await openApp(apps.chrome, {arguments: ['--incognito']});

API

在 macOS 上使用命令 open,在 Windows 上使用 start,在其他平台上使用 xdg-open

open(target, options?)

返回一个针对 spawned child process 的 promise。通常你不需要用它做任何事情,但如果你希望附加自定义事件监听器或直接在生成的进程上执行其他操作,它可能很有用。

target

类型:string

你想要打开的内容。可以是 URL、文件或可执行文件。

使用文件类型的默认应用程序打开。例如,URL 会在你的默认浏览器中打开。

options

类型:object

wait

类型:boolean
默认值:false

在打开的应用程序退出之前等待,然后再兑现 promise。如果为 false,则在打开应用程序时立即兑现。

请注意,它等待的是应用程序退出,而不仅仅是窗口关闭。

在 Windows 上,你必须显式指定一个应用程序才能使其能够等待。

[!WARNING] 当浏览器已在运行时,在浏览器中打开 URL,wait 选项将不会按预期工作。浏览器使用单实例架构,新的 URL 会传递给现有进程,导致命令立即退出。在 macOS 上使用 newInstance 选项以强制启动新的浏览器实例,或者避免在浏览器中使用 wait

background (macOS only)

类型:boolean
默认值:false

不将应用程序置于前台。

newInstance (macOS only)

类型:boolean
默认值:false

即使应用程序已在运行,也打开该应用程序的新实例。

在其他平台上,始终会打开一个新实例。

app

类型:{name: string | string[], arguments?: string[]} | Array<{name: string | string[], arguments: string[]}>

指定用于打开 target 的应用的 name,以及可选的应用 argumentsapp 可以是尝试打开的应用数组,name 可以是尝试的应用名称数组。如果每个应用都失败,将抛出最后一个错误。

应用名称因平台而异。请勿在可复用模块中硬编码。例如,Chrome 在 macOS 上是 google chrome,在 Linux 上是 google-chrome,在 Windows 上是 chrome。如果可能,请使用 apps,它会自动检测要使用的正确二进制文件。

您也可以传入应用的完整路径。例如,在 WSL 上,这可以是 Windows 安装的 Chrome 的 /mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe

应用 arguments 因应用而异。请查阅应用文档以了解它接受哪些参数。

allowNonzeroExitCode

类型:boolean
默认值:false

wait 选项为 true 时,允许打开的应用以非零退出码退出。

我们不建议设置此选项。成功的约定是退出码为零。

openApp(name, options?)

打开一个应用。

返回一个 spawned child process 的 promise。通常您不需要使用它做任何事情,但如果您想附加自定义事件监听器或直接在生成的进程上执行其他操作,它可能很有用。

name

类型:string

应用名称因平台而异。请勿在可复用模块中硬编码。例如,Chrome 在 macOS 上是 google chrome,在 Linux 上是 google-chrome,在 Windows 上是 chrome。如果可能,请使用 apps,它会自动检测要使用的正确二进制文件。

您也可以传入应用程序的完整路径。例如,在 WSL 上,对于 Windows 版本的 Chrome,这可以是 /mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe

options

类型:object

open 相同的选项,除了 app,并包含以下添加项:

arguments

类型:string[]
默认值:[]

传递给应用程序的参数。

这些参数取决于应用程序。请查阅应用程序的文档以了解其接受的参数。

apps

一个包含常见应用程序自动检测的二进制名称的对象。用于处理 跨平台差异

import open, {apps} from 'open';

await open('https://google.com', {
	app: {
		name: apps.chrome
	}
});

browserbrowserPrivate 也可用于通过 default-browser 访问用户的默认浏览器。

支持的应用

  • chrome - 网页浏览器
  • firefox - 网页浏览器
  • edge - 网页浏览器
  • brave - 网页浏览器
  • browser - 默认网页浏览器
  • browserPrivate - 隐身模式下的默认网页浏览器

browserbrowserPrivate 仅支持 chromefirefoxedgebrave

WSL (Windows Subsystem for Linux)

当可用时,该包会自动使用 Windows 集成(PowerShell),如果 PowerShell 不可访问(例如在沙盒环境中),则回退到 xdg-open

若要改用 Linux GUI 应用:

await open('https://example.com', {app: {name: 'xdg-open'}});

相关

  • open-cli - 此模块的 CLI
  • open-editor - 在编辑器中打开文件并定位到特定行和列
  • reveal-file - 在系统文件管理器中显示文件