我有一个javascript项目,在另一个项目中用作实用程序,我想使用npm打包它,以便更多项目可以使用它。我创建的项目结构是:
Project/ |-- src/ | |-- main.js | |-- index.js | | |-- extensions/ | | |-- core-1.js | | |-- ... | | |-- core-n.js | | |-- other-1.js | | |-- ... | | |-- other-n.js | |
主文件创建一个对象,其中包含一些实用程序函数,扩展使用它。 index.js文件从扩展和main获取所有对象和函数,并将其放入单个命名空间中以将其导出。我想要的是当任何人安装此节点模块时,他们应该能够使用主文件和核心扩展中的实用程序。如果他们想要使用其他扩展,他们应该能够明确要求其他扩展。为其他扩展创建单独的节点项目是否是个好主意?或者是否有任何其他方式由npm或节点实现此目的?
答案 0 :(得分:1)
执行require("<your-module>")
时,node.js会默认加载main
或package.json
内index.js
属性中提到的文件。有一种方法可以从特定包中加载单个文件。只需在模块名称前面加上斜杠后附加文件路径。
在您的示例中,可以像这样单独加载
var u1 = require("Project/src/extensions/other-1");
var u2 = require("Project/src/extensions/other-2");
只有other-1
和other-2
个扩展名分别会加载到变量u1
和u2
中。
您应确保在index.js
和main.js
中加载了相应的文件。
以下是节点模块https://github.com/juzerali/require-demo
的示例您应该尝试将项目作为节点模块安装,并尝试使用它来了解它是如何工作的。