标志出现在命令中的位置有关系吗?

标志出现在命令中的位置有关系吗?

我一直在使用以下命令来安装 Expo CLI 软件包:

sudo npm install expo-cli --global

上面的命令可以成功安装该软件包。但是,我想知道--global在包名称之前移动是否与上面的命令同样有效。因此,改为这样做:

sudo npm install --global expo-cli

环境:Ubuntu 18.04。

我在网上查找参考资料,但没有找到(尽管某处一定有)。

答案1

手册页npm(1)显示:

 Synopsis
      npm <command> [args]

它没有说太多其他内容,所以我们只能推断出 是install<command>必须出现在 之前[args]。是和。[args]expo-cli--global

让我们检查一下该install命令,看看是否可以获得更多详细信息。 npm-install(1)说:

Synopsis
    ...
    npm install [<@scope>/]<name>
    ...

    aliases: npm i, npm add
    common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact]
                    [-B|--save-bundle] [--no-save] [--dry-run]

它没有说任何有关顺序的事情。这开始让我们认为顺序并不重要。如果我们向下滚动,我们会看到如下内容:

The  --tag  argument will apply to all of the specified install targets. 
The -g or --global argument will cause npm to install the package globally 
rather than locally.  See npm help folders.

好的...所以手册页中从未提到顺序,但我们看到它--tag适用于所有目标。他们认为在手册页中提及很重要,因为如果有人尝试安装多个软件包并指定标签,他们可能会认为该--tag标志仅适用于之前或之后的软件包。事实并非如此,选项适用于一切。如果选项适用于一切,那么顺序可能并不重要

请注意,他们在手册页中给出的所有示例都将包放在标志之前。

你可以尝试一下:

npm install sax --global expo-cli

检查它们是否都已全局安装(我打赌它们是)。

如果您想安装多个软件包,一些是本地的,一些是全局的,那么我建议采取安全的方法并使用两个单独的命令,因为文档中没有定义它,因此行为可能会改变。

相关内容