1

我想忽略项目中的所有 .sh 文件,除了位于特定目录中的文件,我们将目录称为 foo。

所以我们有:

project/
   bar.sh
   baz.sh
   foo/
     a.sh
     b.sh

我不想发布bar.shbaz.shNPM,但我确实想发布a.shb.shNPM。事实证明,我在 foo 目录之外有许多 .sh 文件,一举忽略所有这些文件会更方便。

我可以在我的.npmignore文件中添加什么来实现这一点?

4

1 回答 1

2

.npmignore的文档中,它指出:

.npmignore文件遵循与文件相同的模式规则.gitignore

在这种情况下,您将忽略所有.sh文件(即*.sh),然后使用撇号否定该模式!并指定要包含的文件夹名称。例如:

示例 1

# ignore all .sh files
*.sh

# include .sh files in the folder foo
!foo/*.sh

使用此配置,(在下面显示的示例文件夹结构的上下文中),所有这些文件都将被忽略:a.sh, b.sh, e.sh,f.sh

包含/发布了以下文件:c.shd.sh.

注意:e.sh并且f.sh使用此配置也会被忽略,因为它们位于子文件夹中。


示例 2

.sh要在文件夹的任何子文件夹中包含/发布文件,foo然后配置.npmignore如下:

# ignore all .sh files
*.sh

# include .sh files in the folder foo and any inside its sub folders
!foo/**/*.sh

使用此配置(在下面显示的示例文件夹结构的上下文中),只有 files:a.shb.sh被忽略。所有其他.sh文件均已发布。


示例文件夹结构

project
├── a.sh
├── b.sh
└── foo
    ├── baz
    │   ├── e.sh
    │   └── f.sh
    ├── c.sh
    └── d.sh
于 2017-03-06T11:10:28.103 回答