Node.js path All In One
Node.js path All In One
const path = require('path');
const app = '/users/github/xgqfrms/app.ts';
const dirname = path.dirname(app);
const basename = path.basename(app);
const extname = path.extname(app);
const log = console.log;
log('__dirname =', __dirname);
log('basename =', basename);
log('extname =', extname);
log('dirname =', dirname);
/*
__dirname = /Users/xgqfrms-mbp/Documents/GitHub/demo/src
dirname = /users/github/xgqfrms
basename = app.ts
extname = .ts
*/
$ node ./src/app.js
https://nodejs.dev/learn/nodejs-file-paths
path.parse()
& path.format()
root: the root
dir: the folder path starting from the root
base: the file name + extension
name: the file name
ext: the file extension
const path = require('path');
path.parse('/users/test.txt');
/*
{
root: '/',
dir: '/users',
base: 'test.txt',
ext: '.txt',
name: 'test'
}
*/
root: the root
dir: the folder path starting from the root
base: the file name + extension
name: the file name
ext: the file extension
const path = require('path');
const appRoot = '/users/xgqfrms/';
const appDir = '/users/xgqfrms/github';
const appBase = 'app.ts';
const appName = 'app';
const appExtension = '.ts';
// POSIX
const filename = path.format({
dir: appDir,
base: appBase,
});
const filename2 = path.format({
root: appRoot,
name: appName,
ext: appExtension,
});
// Windows 磁盘分区 C:
const filename3 = path.format({
dir: 'C:\\Users\\xgqfrms\\github',
base: 'app.ts',
});
const log = console.log;
// log('__dirname =', __dirname);
log('filename =', filename);
log('filename2 =', filename2);
log('filename3 =', filename3);
/*
filename = /users/xgqfrms/github/app.ts
filename2 = /users/xgqfrms/app.ts
filename3 = C:\Users\xgqfrms\github/app.ts
*/
$ node ./src/fromat.js
https://nodejs.dev/learn/the-nodejs-path-module
ES5
// commonjs
const path = require('path')
ES6
// esm
import path form 'path';
demo
CJS
var fs = require("fs");
var path = require("path");
const log = console.log;
console.log('commonjs __dirname =', __dirname);
// commonjs __dirname = /Users/xgqfrms-mbp/Documents/GitHub/app/src
// / 当前文件路径下创建文件夹 ✅ (./src => ./src/upload)
// const dir = __dirname + '/upload';
// console.log('commonjs dir =', dir);
// commonjs dir = /Users/xgqfrms-mbp/Documents/GitHub/app/src/upload
// ../ 当前文件上一层路径下创建文件夹 ❌ (./src => ./upload)
// const dir = __dirname + '../upload';
// console.log('commonjs dir =', dir);
// Error: ENOENT: no such file or directory, mkdir '/Users/xgqfrms-mbp/Documents/GitHub/app/src../upload'
// ../ 当前文件上一层路径下创建文件夹 ✅ (./src => ./upload)
// const dir = path.resolve('../upload');
const dir = path.resolve(__dirname, '../upload');
console.log('commonjs dir =', dir);
// commonjs dir = /Users/xgqfrms-mbp/Documents/GitHub/app/upload
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
// if (!fs.existsSync(dir)) {
// fs.mkdirSync(dir, {
// mode: 0o744,
// });
// // mode's default value is 0o744
// }
// if (!fs.existsSync(dir)) {
// fs.mkdirSync(dir, {
// recursive: true,
// mode: 0o744,
// });
// // mode's default value is 0o744
// }
/*
// mjs
node --experimental-modules ./src/mkdir.mjs
# "type": "module",
node ./src/mkdir.js
node ./src/mkdir.cjs
*/
ESM
import fs from "fs";
import path from "path";
const log = console.log;
// 指定当前 root 路径 ✅
const __dirname = path.resolve('./src');
console.log('esm __dirname =', __dirname);
// esm __dirname = /Users/xgqfrms-mbp/Documents/GitHub/app
// ../ 当前文件上一层路径下创建文件夹 ✅ (./src => ./upload)
const dir = path.resolve(__dirname, '../upload');
log('esm dir =', dir);
// esm dir = /Users/xgqfrms-mbp/Documents/GitHub/app/upload
// ../ 当前文件上一层路径下创建文件夹 ❌ (./src => ./upload)
// const dir = __dirname + '../upload';
// log('esm dir =', dir);
// Error: ENOENT: no such file or directory, mkdir '/Users/xgqfrms-mbp/Documents/GitHub/app/src../upload'
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
// if (!fs.existsSync(dir)) {
// fs.mkdirSync(dir, {
// mode: 0o744,
// });
// // mode's default value is 0o744
// }
// if (!fs.existsSync(dir)) {
// fs.mkdirSync(dir, {
// recursive: true,
// mode: 0o744,
// });
// // mode's default value is 0o744
// }
/*
node --experimental-modules ./src/mkdir-src.mjs
node ./src/mkdir-src.js
*/
refs
https://nodejs.org/api/path.html
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/16155641.html
未经授权禁止转载,违者必究!