developer tip

Node.js-현재 파일 이름 가져 오기

optionbox 2020. 8. 17. 08:46
반응형

Node.js-현재 파일 이름 가져 오기


현재 파일 이름, 함수 이름 및 줄 번호를 얻는 방법은 무엇입니까?

나는 목적, 해당에 디버깅 / 로깅을 사용하려면 __FILE__, __LINE__C에


Node.js는이를위한 표준 API를 제공합니다 : Path .

현재 스크립트의 이름을 얻는 것은 쉽습니다.

var path = require('path');
var scriptName = path.basename(__filename);

모듈 내에서 다음 중 하나를 수행하여 파일 이름이있는 전체 경로를 가져올 수 있습니다.

this.filename;
module.filename;
__filename;

경로 나 확장자가없는 실제 이름 만 원한다면 다음과 같이 할 수 있습니다.

module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);

파일 이름 만 가져옵니다. 추가 모듈이 없습니다.

// abc.js
console.log(__filename.slice(__dirname.length + 1));

 // abc
console.log(__filename.slice(__dirname.length + 1, -3));

'use strict';

const scriptName = __filename.split(/[\\/]/).pop();

설명

console.log(__filename);
// 'F:\__Storage__\Workspace\StackOverflow\yourScript.js'
const parts = __filename.split(/[\\/]/);
console.log(parts);
/*
 * [ 'F:',
 *   '__Storage__',
 *   'Workspace',
 *   'StackOverflow',
 *   'yourScript.js' ]
 *
**/

여기서는 정규식 을 첫 번째 매개 변수로 사용하는 분할 함수를 사용 합니다. 우리는 분리에 대해 원하는 정규 표현식은 (기준 분할 또는 )하지만 기호가 정규 표현식 터미네이터 구별하기 위해 이스케이프해야합니다 그래서 .
[\/]/\///[\\/]/

const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'

이것을 사용하지 마십시오

path.basename대신 슬래시가있는 파일 이름 (예 : 유닉스에서 "foo \ bar"라는 이름의 파일)과 같이 알고 싶지 않은 모든 코너 케이스를 처리하기 때문에 대신 사용해야 합니다 ( Node.js v0.1.25에 처음 문서화 됨 ). 위의path 답변을 참조하십시오 .


console-plus를 볼 수도 있습니다 . 이렇게하면 로깅 텍스트에 파일 이름과 줄 번호가 추가되고 .log, .info 및 .error에 대해 서로 다른 색상이 적용됩니다.


글쎄, 나는 파일 이름을 로거의 태그로 사용하고 싶었으므로 가장 간단하고 내가 원하는 것은 다음과 같습니다.

__filename.substring(__dirname.length + 1, __filename.lastIndexOf("."))

벌써 오랜만이라는 건 알지만 제가 한 일은 __filename.split('\\').pop(). 이것은 파일 이름이있는 전체 경로 \를 가져 와서 분할 한 다음 파일 이름이 될 마지막 색인을 얻습니다.


이 함수를 사용하여 파일 이름을 가져올 수 있습니다.

/**
 * @description 
 * get file name from path
 * @param {string} path path to get file name
 * @returns {string} file name
 * @example 
 * getFileName('getFileName/index.js') // => index.js
 */
export default function getFileName(path) {
    return path.replace(/^.*[\\\/]/, '');
}

nodejs를 사용하는 경우 https://www.npmjs.com/package/jotils 이 기능이 포함 된 패키지를 설치할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/14201475/node-js-getting-current-filename

반응형