4

包提供某种类型的演示应用程序似乎是一种很好的做法,所以我只是想知道组织文件结构的最干净的方法是什么?

我想要一个 github 存储库,其中包含我已发布的 NPM 模块和一个简单的演示 webapp。

理想情况下,我想要一个顶级的:

package/
demo/

并将代码package/分发到 NPM。我可以使用package.json文件选项,例如

files: [ 'package' ]

但是随后所有代码都将使用该路径前缀分发,例如

node_modules/MyPackageName/package/index.js

有没有办法修改路径前缀,以便更改顶级目录并删除package/我用来组织文件的额外内容?

当然其他人有办法做到这一点,但我不想使用两个 repos - 一个演示和一个包。

澄清我希望能够直接从 github 安装包,作为一种“可怜的私人 NPM”。所以我不想只从“包”目录中发布。我认为使用 github URL 可以指定要使用的分支,但不能指定子目录。

4

1 回答 1

1

您可以在 NODE_PATH 环境变量的帮助下做到这一点:

export NODE_PATH='yourdir'/node_modules

参考

如果 NODE_PATH 环境变量设置为以冒号分隔的绝对路径列表,则 Node.js 将在这些路径中搜索模块(如果在其他地方找不到它们)。

在 Windows 上,NODE_PATH 由分号 (;) 而非冒号分隔。

NODE_PATH 最初创建是为了在当前模块解析算法被冻结之前支持从不同路径加载模块。

NODE_PATH 仍然受支持,但由于 Node.js 生态系统已经确定了定位依赖模块的约定,因此不再那么需要了。有时,当人们不知道必须设置 NODE_PATH 时,依赖 NODE_PATH 的部署会表现出令人惊讶的行为。有时模块的依赖关系会发生变化,导致在搜索 NODE_PATH 时加载不同的版本(甚至是不同的模块)。

此外,Node.js 将在以下 GLOBAL_FOLDERS 列表中搜索:

1: $HOME/.node_modules 2: $HOME/.node_libraries 3: $PREFIX/lib/node 其中$HOME是用户的主目录,$PREFIX是Node.js配置的node_prefix。

这些主要是出于历史原因。

强烈建议将依赖项放在本地 node_modules 文件夹中。这些将更快,更可靠地加载。

于 2018-06-05T05:34:17.563 回答