확장 구조
도큐사우루스는 외부 플러그인으로 확장할 수 있는 핫 리로딩, CLI, 스위즐링 같은 일부 구조를 가지고 있습니다.
getPathsToWatch()
플러그인과 테마 변경을 체크하기 위한 경로를 설정합니다. 설정된 경로는 개발 서버에서 지켜보고 있다가 내용 변경이 생기면 플러그인 수명주기가 다시 로드됩니다. 초기 설정된 플러그인과 테마 모듈은 노드 상에서 context
와 options
를 사용해 접근할 수 있습니다. 이를 통해 필요한 디렉터리 정보를 얻을 수 있습니다.
테마 파일은 웹팩 개발 서버에서 지켜보고 있기 때문에 이건 서버 측에서 사용하는 파일을 위해 사용합니다.
예:
docusaurus-plugin/src/index.js
const path = require('path');
module.exports = function (context, options) {
return {
name: 'docusaurus-plugin',
getPathsToWatch() {
const contentPath = path.resolve(context.siteDir, options.path);
return [`${contentPath}/**/*.{ts,tsx}`];
},
};
};
extendCli(cli)
도큐사우루스의 명령행 인터페이스를 확장하기 위한 추가 명령어를 등록합니다. cli
는 commander 오브젝트입니다.
warning
commander 버전 관련 이슈가 있습니다. 우리는 commander v5를 사용하며 사용할 수 있는 API에 대한 올바른 버전 문서를 참고하고 있는지 확인합니다.
예:
docusaurus-plugin/src/index.js
module.exports = function (context, options) {
return {
name: 'docusaurus-plugin',
extendCli(cli) {
cli
.command('roll')
.description('Roll a random number between 1 and 1000')
.action(() => {
console.log(Math.floor(Math.random() * 1000 + 1));
});
},
};
};
getThemePath()
테마 컴포넌트를 찾을 수 있는 디렉터리 경로를 반환합니다. 사용자가 swizzle
을 호출하면 getThemePath
가 호출되면서 테마 컴포넌트를 찾을 수 있는 경로를 반환합니다. 엔트리 포인트가 포함된 폴더에 대해 상대 경로를 확인합니다.
예를 들어 getThemePath
는 이렇게 설정할 수 있습니다.
my-theme/src/index.js
const path = require('path');
module.exports = function (context, options) {
return {
name: 'my-theme',
getThemePath() {
return './theme';
},
};
};