在nodejs平台上写一些工具或者服务, 有不少需求会涉及到对目录或者文件路径的处理和操做。整理一些经常使用的处理path的方法html
Example: running node example.js from /Users/jiao console.log(__dirname); // /Users/jiao
Example: running node example.js from /Users/jiao console.log(__filename); // /Users/jiao/example.js
Example: running grunt buildguide from /Users/jiao/test process.execPath //usr/local/bin/node process.env.PWD; //Users/jiao/test process.cwd(); //Users/jiao/test //修改当前进程工做区为/Users/jiao process.chdir("/Users/jiao"); process.cwd(); //Users/jiao process.env.PWD; //Users/jiao/test
官方解释:This module contains utilities for handling and transforming file paths. Almost all these methods perform only string transformations. The file system is not consulted to check whether paths are valid.
详情参考:http://nodejs.org/api/path.htmlnode
path.resolve('/foo/bar', './baz') // returns '/foo/bar/baz' path.resolve('/foo/bar', '/tmp/file/') // returns '/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif') // if currently in /home/myself/node, it returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb') // returns '..\\..\\impl\\bbb' path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb') // returns '../../impl/bbb'
会将working directory设置为Gruntfile所在的目录或--base参数所指定的目录,默认为Gruntfile所在的位置api
process.chdir(grunt.option('base') || path.dirname(gruntfile));
file.setBase = function() { var dirpath = path.join.apply(path, arguments); process.chdir(dirpath); }; grunt.loadNpmTasks(p)
插件的加载路径默认是当前工做目录下面的 node_modules + p + 'tasks', 查看grunt内部的代码实现以下:app
var root = path.resolve('node_modules'); var tasksdir = path.join(root, p, 'tasks'); //加载grunt 插件的tasks if (grunt.file.exists(tasksdir)) { loadTasks(tasksdir); } else { grunt.log.error('Local Npm module "' + name + '" not found. Is it installed?'); }