在搭建ES6环境需要自己写gulpfile.js配置时,发现里面用到了node.js中的一部分内容——path。
配置中有这样一行代码:
const from = path.join(_dirname, './appes6/js'); //d:/Users/xxchi/Desktop/ES6/appes6/js
这是什么意思呢?
1、const ES6语法声明一个不可以改变的只读常量from。
2、path.join 是node.js中用path模块连接路径,即链接 _dirname 和 ./appes6/js
3、_dirname 在node.js中会返回该文件所在文件夹的位置,即gulpfile.js所在文件夹的位置(d:/Users/xxchi/Desktop/ES6)
拼接后就得到了d:/Users/xxchi/Desktop/ES6/appes6/js这个结果。
注意:使用path模块前必须先引入该模块
import path from 'path'
Node.js v7.5.0
path模块功能介绍(以下demo均来自官网),个人认为比较常用的两个方法join和normalize已标红
path模块提供了关于文件和文件目录的一些用法,引入path模块即可。
//引入path模块
const path = require('path');
path操作的返回结果会因操作系统的不同而有所不同。例如:
path.basename('C:\\temp\\myfile.html');
//POSIX系统下,返回:'C:\\temp\\myfile.html'
//windows系统下,返回:'myfile.html'
为了得到一致的结果可以使用path.win32
插入十三、path.win32 提供windows下,下述方法的访问.
path.win32.basename('C:\\temp\\myfile.html'); //两个系统下均返回 'myfile.html'
注:Windows下斜杠(/)和反斜杠(\)都是允许作为路径分隔符的,但是返回值中只有反斜杠(\)
一、path.basename(path[, ext]),类似UNIX系统下的basename命令,返回文件名
- path 字符串,路径
- ext 字符串,扩展名 如果path和ext不是字符串的形式会抛出TypeError的错误
- 返回值以字符串的形式
path.basename('/foo/bar/baz/asdf/quux.html') //'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html') //'quux'
二、path.delimiter 提供不同系统下的分隔符。windows系统(;)和posix(:)系统分隔符不同
POSIX下:
console.log(process.env.PATH);
//'usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
process.env.PATH.split(path.delimiter)
//['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
Window下:
console.log(process.env.PATH)
//'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
process.env.PATH.split(path.delimiter)
//['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']
插入十二、path.sep 返回各平台的分隔符(Windows\,POSIX/)
POSIX下:
'foo/bar/baz'.split(path.sep);
//返回:['foo','bar','baz']
Windows下:
'foo\\bar\\baz'.split(path.sep)
//返回:['foo','bar','baz']
三、path.dirname(path) 返回文件所在路径名
path.dirname('/foo/bar/baz/asdf/quux');
//'/foo/bar/baz/asdf/'
四、path.extname(path) 返回拓展名。按照出现的最后一个点来划分,如果没有.或者路径是以.开头的就返回一个空字符串,如果最后一个刚好是.就返回.
path.extname('index.html') //'.html'
path.extname('index.coffee.md') //'.md'
path.extname('index.') //'.'
path.extname('index') //''
path.extname('.index') //''
五、path.format(pathObject) 将对象形式的路径转为字符串形式的,与path.parse()相反
- pathObject 对象 包括:dir, root, base, name, ext
这几种属性有优先级需要注意:
- 有dir忽略root
- 有base忽略name和ext
POSIX:
//1、dir, root, base都提供了,忽略root,返回dir和base拼出的路径
path.format({
root: '/ignored',
dir: '/home/user/dir',
base: 'file.txt'
})
//返回: /home/user/dir/file.txt
//2、没有dir有root,则用root。如果只提供了root或者root等于dir则忽略拓展名
path.format({
root: '/',
base: 'file.txt',
ext: 'ignored'
})
//返回 '/file.txt'
//3、如果没有base,返回root+name+ext
path.format({
root: '/',
name: 'file',
ext: '.txt'
})
//返回 '/file.txt'
Windows:
path.format({
dir : "C:\\path\\dir",
base : "file.txt"
});
//返回 'C:\\path\\dir\\file.txt'
五、path.isAbsolute(path) 判断是否是绝对路径,返回布尔值
POSIX:
path.isAbsolute('/foo/bar') // true
path.isAbsolute('/baz/..') // true
path.isAbsolute('qux/') // false
path.isAbsolute('.') // false
path.isAbsolute('/baz/..') // true
path.isAbsolute('qux/') // false
path.isAbsolute('.') // false