2017-03-01 1 views
0

과 관련하여 하나 이상의 파일을로드하려는 라이브러리를 개발 중입니다. 더 나은이를 설명하기 위해 :requirer을 기준으로 파일을 요구하는 방법은 무엇입니까?

// ~/app.js 
import { horn } from 'unicorn' 
horn.load() 

// ~/node_modules/unicorn/horn.js 
export default { 
    load() { 
    require('./user.config.js') // Here I would like to load the user config 
           // relative to "~/app.js" 
    } 
} 

을 전 세계 require하고 parent 속성을 검사하려했지만 그것은 단지 더 컨텍스트없이 나에게 파일 이름을 제공합니다.

답변

1

다음은 가능한 작업은 다음과 같습니다

module.parent 

이이 모듈을로드 할 첫 번째 모듈의 모듈 핸들입니다. 모듈 핸들은 캐시되기 때문에로드 된 첫 번째 모듈 만 반영됩니다.

module.filename 

모듈에 대한 완전한 파일 이름입니다. 해당 디렉토리에서 뭔가를로드 할 수 있도록 단지 부모 모듈의 경로를 원하는 경우

module.parent.filename 

, 당신은 분할 할 수 있습니다 : 당신이 부모 모듈의 완전한 파일 이름을 원한다면, 당신은이를 사용할 수 있습니다 path 모듈을 사용하여 경로를 얻으려면 파일 이름에서 경로를 끕니다. 당신이 그 디렉토리에서 파일을로드하려면

path.dirname(module.parent.filename) 

, 당신이 할 수 있습니다 : 그 module.parent 만에 첫 번째 모듈을 반환 위에

let fileToLoad = path.join(path.dirname(module.parent.filename), "user.config.js"); 
let config = require(fileToLoad); 

당신은주의해야 할 점을 기억해야합니다 그 이후에 모듈이 캐시되고 원래 모듈 핸들 만 반환되므로 (다시로드되지 않기 때문에)로드됩니다.

+0

굉장! 세부 사항 및 충고에 감사드립니다. 나는 잠시 시간을 할애 해 주겠다. 그러면 대답을 받아 들일 것이다. –

+0

@RubensMariuzzo -이 기능을 사용할 수 있었습니까? 너에게 효과가 있었 니? 문제가 지금 끝났음을 지역 사회에 알리기 위해 최선의 답을 표시하는 것이 적절합니까? – jfriend00

+0

아직 확인하지 않았지만 하겠소. 나는 다른 것들로 빨려왔다. 죄송합니다! –

관련 문제