在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?'); }