require('module/component') when component.js 不在模块根目录中?

require('module/component') when component.js is not in module root?

我正在尝试创建一个包含几个 React 组件的 npm 包。这些将用于其他几个项目,因此我希望将它们放在一个单独的包中。

我希望能够require('comps/a-component') 从使用此包的应用程序中进行。我可以通过将所有组件放在模块的根目录中来做到这一点,但我不想那样做。相反,我想将所有组件都放在 src/components/ 中,因为根目录会人满为患。

这似乎是一件微不足道的事情,但我还没有成功。我浏览了 https://docs.npmjs.com/files/package.json 试图找到一个选项来设置根或其他东西。有人对如何实现这一点有任何想法吗?

谢谢!

如果你的应用是这样的:

- AppFolder
   |-index.js
   |-Readme.md
   |-/src
      |-app.js
      |-anotherThing.js

如果我想使用anotherThing.js,我可以直接使用var anotherThing = require('./src/anotherThing');。除非我不明白你的问题。

或者您的意思是 the main attribute in package.json

您可以在 node_modules 目录中创建符号链接到您的组件目录。这将允许您像您所说的那样从应用程序的任何位置请求您的组件:require('comps/a-component')。要在 linux 或 osx 上创建符号链接,您可以这样做

cd ./node_modules; ln -snf ../src/components comps;

另一种选择是从每个组件实际创建 npm 包,这样您就可以将它们列在 package.json.

的依赖项中

在 npm 2.0 中发布的另一个有前途的选项是本地依赖项。这允许您指向文件系统上的本地 npm 包。在这种情况下,每个组件都必须写成带有 package.json https://docs.npmjs.com/files/package.json#local-paths

的 npm 包