luc*_*aro 9 javascript node.js
我正在开发一个需要使用当前目录名称的 CLI 应用程序。
我可以使用process.cwd(). 如何获取当前目录名称而不是整个路径?
可以执行以下操作吗?
process.cwd().split('/').slice(-1)[0]
Run Code Online (Sandbox Code Playgroud)
它有效,但感觉很脆弱。这样做的最佳和最强大的方法是什么?
luc*_*aro 15
即使答案中的代码有效,您也应该使用path.basename()来获取路径最后一部分的名称,因为:
/的/path/to/cwd/)此外,为了额外的安全,您应该使用path.resolve()它,因为它在获取基本名称之前规范了路径,摆脱了与路径相关的怪癖。
如果您可以获得/path/to/cwdwith process.cwd(),那么以下内容将为您提供目录的名称("cwd"在示例中):
path.basename(process.cwd())
Run Code Online (Sandbox Code Playgroud)
添加path.resolve()额外的安全:
path.basename(path.resolve(process.cwd()))
Run Code Online (Sandbox Code Playgroud)
甚至:
path.basename(path.resolve())
Run Code Online (Sandbox Code Playgroud)
const path = require('path');
function slice(pathName) {
const res = pathName.split(path.sep).slice(-1)[0];
console.log('slicer ', pathName, '=>', `'${res}'`);
}
function basename(pathName) {
const res = path.basename(path.resolve(pathName));
console.log('basename', pathName, '=>', `'${res}'`);
}
slice('/path/to/cwd'); // cwd
basename('/path/to/cwd'); // cwd
slice('/path/to/cwd/'); // ''
basename('/path/to/cwd/'); // cwd
// Other valid paths
slice('/path/to/cwd/..'); // '..'
basename('path/to/cwd/..'); // cwd
slice('.'); // '.'
basename('.'); // <current directory name>
Run Code Online (Sandbox Code Playgroud)
Returns: <string>
Run Code Online (Sandbox Code Playgroud)
process.cwd() 方法返回 Node.js 进程的当前工作目录。
Run Code Online (Sandbox Code Playgroud)console.log(`Current directory: ${process.cwd()}`);
这保证是当前工作目录的绝对路径。用这个!
path <string>
ext <string> An optional file extension
Returns: <string>
Run Code Online (Sandbox Code Playgroud)
该
path.basename()方法返回路径的最后一部分,类似于 Unix basename 命令。尾随目录分隔符将被忽略,请参见 path.sep。Run Code Online (Sandbox Code Playgroud)path.basename('/foo/bar/baz/asdf/quux.html'); // Returns: 'quux.html' path.basename('/foo/bar/baz/asdf/quux.html', '.html'); // Returns: 'quux'如果 path 不是字符串或者 ext 不是字符串,则抛出 TypeError 。
Run Code Online (Sandbox Code Playgroud)...paths <string> A sequence of paths or path segments Returns: <string>path.resolve() 方法将一系列路径或路径段解析为绝对路径。
给定的路径序列从右到左处理,每个后续路径都在前面,直到构建绝对路径。例如,给定路径段的序列:/foo, /bar, baz,调用 path.resolve('/foo', '/bar', 'baz') 将返回 /bar/baz。
如果在处理完所有给定的路径段后还没有生成绝对路径,则使用当前工作目录。
生成的路径被规范化并删除尾部斜杠,除非路径解析为根目录。
零长度路径段被忽略。
如果没有传递路径段, path.resolve() 将返回当前工作目录的绝对路径。
如果你可以使用process.cwd()你path.resolve()在其他情况下不需要的,使用它!。
您正在寻找path.basename:
const path = require('path');
path.basename(CWD)
Run Code Online (Sandbox Code Playgroud)
所述path.basename()方法返回的路径的最后部分。尾随目录分隔符被忽略。
| 归档时间: |
|
| 查看次数: |
6204 次 |
| 最近记录: |