如果我在src
目录中发布包含源文件的节点模块,并且人们想要在他们的项目中导入文件,他们需要指定模块的完整路径。
示例:
结构:
my-module
--src
----index.js
----something-else.js
package.json
:
{
"name": "my-module",
"root": "src/index.js"
}
实现:
import myModule from 'my-module';
import somethingElse from 'my-module/src/something-else';
(或使用require
)
var myModule = require('my-module');
var somethingElse = require('my-module/src/something-else');
有没有办法设置软件包,以便它知道src
是我的源根目录,允许用户somethingElse
my-module/something-else
需要?{/ p>
如果无法做到这一点,那么在预发布时将文件从src
中拉出来是不是一个好/坏主意?
答案 0 :(得分:2)
根据我的经验,在这个例子中通常做的是:
something-else.js
文件,其中只包含require('src/something-else');
用户只能require('my-module/something-else');
在这种情况下,您有一个更好的API,这意味着将来对您的目录结构进行任何更改不要破坏你的用户代码。即,您可以将something-else
移至my-module/other-sources/something-else
,只需更改根文件,您的用户代码仍可使用。my-module
,它需要您的模块可用的所有内容,然后用户可以通过myModule.somethingElse
否则,我没有遇到明确设置源根的方法。如果确实存在,该选项可能很方便。
答案 1 :(得分:0)
安装 module-alias 包:
while(strcmp(candidates[i].name, name) == 0)
{
}
像这样向您的 while(strcmp(candidates[i].name, name) == 0)
;
添加路径:
npm i --save module-alias
在您的入口点文件中,在任何 package.json
调用之前:
{
"_moduleAliases": {
"@lib": "app/lib",
"@models": "app/models"
}
}
您现在可以要求这样的文件:
require()