![](/img/trans.png)
[英]is it possible to define a set function for module variables in node.js
[英]Is it possible to set the root directory of a node module?
如果我在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
是我的源根目錄,從而允許用戶使用my-module/something-else
來要求somethingElse
嗎?
如果這是不可能的,在預發布時將文件從src
拉出是一個好/壞主意嗎?
根據我的經驗,在這種情況下通常要做的是:
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
選擇模塊的哪個部分否則,我還沒有遇到明確設置源根的方法。 如果確實存在,該選項可能會很方便。
安裝模塊別名包:
npm i --save module-alias
像這樣向package.json
添加路徑:
{ "_moduleAliases": { "@lib": "app/lib", "@models": "app/models" } }
在您的入口點文件中,在任何require()
調用之前:
require('module-alias/register')
你現在可以要求這樣的文件:
const Article = require('@models/article');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.