الفرق بين المراجعتين لصفحة: «Node.js/path»

من موسوعة حسوب
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 6: سطر 6:
</syntaxhighlight>
</syntaxhighlight>


== Windows في مقابل POSIX ==
== ويندوز في مقابل POSIX ==
يختلف التشغيل الإفتراضي لوحدة <code>path</code> استناداً إلى نظام التشغيل الذي يعمل عليه أحد تطبيقات Node.js. على وجه التحديد، عند تشغيل نظام تشغيل Windows، ستفترض وحدة <code>path</code> استخدام نمط Windows للمسارات.
يختلف التشغيل الإفتراضي لوحدة <code>path</code> استنادًا إلى نظام التشغيل الذي يعمل عليه أحد تطبيقات Node.js. على وجه التحديد، عند تشغيل نظام تشغيل ويندوز، ستفترض وحدة <code>path</code> استخدام نمط ويندوز للمسارات.


على سبيل المثال، استخدام الدالة <code>path.basename()‎</code> مع مسار Windows للملف <code>C:\temp\myfile.html</code>، وسيُسفر ذلك عن نتائج مختلفة عند تشغيله على POSIX عمّا هو الحال عند تشغيله على Windows:
على سبيل المثال، استخدام الدالة <code>path.basename()‎</code> مع مسار ويندوز للملف <code>C:\temp\myfile.html</code>، وسيُسفر ذلك عن نتائج مختلفة عند تشغيله على نظام يتبع معايير POSIX عمّا هو الحال عند تشغيله على ويندوز:


في POSIX:<syntaxhighlight lang="javascript">
في POSIX:<syntaxhighlight lang="javascript">
path.basename('C:\\temp\\myfile.html');
path.basename('C:\\temp\\myfile.html');
// إعادة: 'C:\\temp\\myfile.html'
// إعادة: 'C:\\temp\\myfile.html'
</syntaxhighlight>في Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>في ويندوز:<syntaxhighlight lang="javascript">
path.basename('C:\\temp\\myfile.html');
path.basename('C:\\temp\\myfile.html');
// إعادة: 'myfile.html'
// إعادة: 'myfile.html'
</syntaxhighlight>يُستخدم <code>path.win32</code> لتحقيق نتائج متسقة عند العمل مع مسارات ملفات Windows على أي نظام تشغيل:
</syntaxhighlight>يُستخدم <code>path.win32</code> لتحقيق نتائج متسقة عند العمل مع مسارات ملفات ويندوز على أي نظام تشغيل:


على POSIX و Windows:<syntaxhighlight lang="javascript">
على POSIX وويندوز:<syntaxhighlight lang="javascript">
path.win32.basename('C:\\temp\\myfile.html');
path.win32.basename('C:\\temp\\myfile.html');
// إعادة: 'myfile.html'
// إعادة: 'myfile.html'
سطر 25: سطر 25:
path.posix.basename('/tmp/myfile.html');
path.posix.basename('/tmp/myfile.html');
// إعادة: 'myfile.html'
// إعادة: 'myfile.html'
</syntaxhighlight>على POSIX و Windows:
</syntaxhighlight>ملاحظة: يتبع Node.js على Windows مفهوم مجلد العمل لكل محرك أقراص. ويمكن ملاحظة هذا السلوك عند استخدام مسار محرك أقراص بدون الشرطة المائلة العكسية. على سبيل المثال، يحتمل أن يعيد path.resolve('c:\\')‎ نتيجة مختلفة عن path.resolve('c:')‎. للحصول على مزيد من المعلومات، راجع [https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#fully-qualified-vs-relative-paths هذه الصفحة على MSDN].
 
ملاحظة: يتبع Node.js على Windows مفهوم مجلد العمل لكل محرك أقراص. ويمكن ملاحظة هذا السلوك عند استخدام مسار محرك أقراص بدون الشرطة المائلة العكسية. على سبيل المثال، يحتمل أن يعيد path.resolve('c:\\')‎ نتيجة مختلفة عن path.resolve('c:')‎. للحصول على مزيد من المعلومات، راجع [https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#fully-qualified-vs-relative-paths هذه الصفحة على MSDN].


== <code>path.basename(path[, ext])‎</code> ==
== <code>path.basename(path[, ext])‎</code> ==
سطر 44: سطر 42:
* <code>ext</code> من النوع [[JavaScript/String|<string>]] امتداد اختياري لاسم الملف.
* <code>ext</code> من النوع [[JavaScript/String|<string>]] امتداد اختياري لاسم الملف.
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
تُعيد توابع <code>path.basename()‎</code> الجزء الأخير من <code>path</code>، كما هو الحال مع أمر <code>basename</code> في Unix. تُتجاهل فواصل المجلدات الملحقة، انظر <code>path.sep</code>.<syntaxhighlight lang="javascript">
تُعيد توابع <code>path.basename()‎</code> الجزء الأخير من <code>path</code>، كما هو الحال مع الأمر <code>basename</code> في يونكس. تُتجاهل فواصل المجلدات الملحقة، انظر <code>path.sep</code>.<syntaxhighlight lang="javascript">
path.basename('/foo/bar/baz/asdf/quux.html');
path.basename('/foo/bar/baz/asdf/quux.html');
// إعادة: 'quux.html'
// إعادة: 'quux.html'
سطر 50: سطر 48:
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// إعادة: 'quux'
// إعادة: 'quux'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية أو إذا توفر <code>ext</code> و كان ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية أو إذا توفر <code>ext</code> و كان ليس سلسلة نصية.


== <code>path.delimiter</code> ==
== <code>path.delimiter</code> ==
سطر 56: سطر 54:
* من النوع [[JavaScript/String|<string>]].
* من النوع [[JavaScript/String|<string>]].
توفير مُحدِّد مسار محدد بحسب المنصة:
توفير مُحدِّد مسار محدد بحسب المنصة:
* <code>;</code> لنظام التشغيل Windows.
* <code>;</code> لنظام التشغيل ويندوز.
* <code>:</code> لنظام التشغيل POSIX.
* <code>:</code> لنظام التشغيل POSIX.
على سبيل المثال، في POSIX:<syntaxhighlight lang="javascript">
على سبيل المثال، في POSIX:<syntaxhighlight lang="javascript">
سطر 64: سطر 62:
process.env.PATH.split(path.delimiter);
process.env.PATH.split(path.delimiter);
// إعادة: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
// إعادة: ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
</syntaxhighlight>في Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>في ويندوز:<syntaxhighlight lang="javascript">
console.log(process.env.PATH);
console.log(process.env.PATH);
// طباعة: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
// طباعة: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
سطر 86: سطر 84:
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
يُعيد التابع <code>path.dirname()</code>‎ اسم المجلد للمسار <code>path</code>، كما هو الحال مع أمر <code>dirname</code> في Unix. تُتجاهل فواصل المجلدات الملحقة، انظر <code>path.sep</code>.<syntaxhighlight lang="javascript">
يُعيد التابع <code>path.dirname()</code>‎ اسم المجلد للمسار <code>path</code>، كما هو الحال مع الأمر <code>dirname</code> في يونكس. تُتجاهل فواصل المجلدات الملحقة، انظر <code>path.sep</code>.<syntaxhighlight lang="javascript">
path.dirname('/foo/bar/baz/asdf/quux');
path.dirname('/foo/bar/baz/asdf/quux');
// إعادة
// إعادة
: '/foo/bar/baz/asdf'
: '/foo/bar/baz/asdf'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.
</syntaxhighlight>يرمي <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.


== <code>path.extname(path)‎</code> ==
== <code>path.extname(path)‎</code> ==
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
يُعيد التابع <code>path.extname()‎</code> امتداد <code>path</code>، من آخر تواجد لعلامة النقطة <code>'.'</code> إلى نهاية السلسلة النصية في الجزء الأخير من <code>path</code>. تُعاد سلسلة نصية فارغة إذا لم يكن هناك نقطة <code>'.'</code> في الجزء الأخير من المسار <code>path</code>، أو إذا كان الحرف الأول من <code>basename</code> من المسار <code>path</code> هو النقطة <code>'.'</code> (راجع <code>path.basename()</code>‎).<syntaxhighlight lang="javascript">
يُعيد التابع <code>path.extname()‎</code> امتداد المعامل <code>path</code>، من آخر تواجد لعلامة النقطة <code>'.'</code> إلى نهاية السلسلة النصية في الجزء الأخير من <code>path</code>. تُعاد سلسلة نصية فارغة إذا لم يكن هناك نقطة <code>'.'</code> في الجزء الأخير من المسار <code>path</code>، أو إذا كان الحرف الأول من <code>basename</code> من المسار <code>path</code> هو النقطة <code>'.'</code> (راجع <code>path.basename()</code>‎).<syntaxhighlight lang="javascript">
path.extname('index.html');
path.extname('index.html');
// إعادة: '.html'
// إعادة: '.html'
سطر 110: سطر 108:
path.extname('.index');
path.extname('.index');
// إعادة: ''
// إعادة: ''
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.


== <code>path.format(pathObject)‎</code> ==
== <code>path.format(pathObject)‎</code> ==
سطر 127: سطر 125:
* يُتجاهل كلٌ من <code>pathObject.ext</code> و <code>pathObject.name</code> في حالة وجود <code>pathObject.base</code>.
* يُتجاهل كلٌ من <code>pathObject.ext</code> و <code>pathObject.name</code> في حالة وجود <code>pathObject.base</code>.
على سبيل المثال، في POSIX:<syntaxhighlight lang="javascript">
على سبيل المثال، في POSIX:<syntaxhighlight lang="javascript">
// If `dir`, `root` and `base` are provided,
// إذا توفَّر `dir` و` root` و` base` ،
// `${dir}${path.sep}${base}`
// سيُعاد `${dir}${path.sep}${base}`
// will be returned. `root` is ignored.
// ويُتجاهل `root`.
path.format({
path.format({
   root: '/ignored',
   root: '/ignored',
سطر 135: سطر 133:
   base: 'file.txt'
   base: 'file.txt'
});
});
// Returns: '/home/user/dir/file.txt'
// يُعيد: '/home/user/dir/file.txt'


// `root` will be used if `dir` is not specified.
// يُستخدم `root` إذا لم يُحدد `dir`.
// If only `root` is provided or `dir` is equal to `root` then the
// إذا توفَّر `root` أو كان `dir` يساوي `root`
// platform separator will not be included. `ext` will be ignored.
// لن يُتضمَّن فاصل النظام الأساسي. ويُتجاهل `ext`.
path.format({
path.format({
   root: '/',
   root: '/',
سطر 145: سطر 143:
   ext: 'ignored'
   ext: 'ignored'
});
});
// Returns: '/file.txt'
// يُعيد: '/file.txt'


// `name` + `ext` will be used if `base` is not specified.
// يُستخدم `name` + `ext` إذا لم يُحدد `base`.
path.format({
path.format({
   root: '/',
   root: '/',
سطر 153: سطر 151:
   ext: '.txt'
   ext: '.txt'
});
});
// Returns: '/file.txt'
// يُعيد: '/file.txt'
</syntaxhighlight>في Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>في ويندوز:<syntaxhighlight lang="javascript">
path.format({
path.format({
   dir: 'C:\\path\\dir',
   dir: 'C:\\path\\dir',
سطر 166: سطر 164:
* path من النوع [[JavaScript/String|<string>]].
* path من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/Boolean|<boolean>]].
* القيمة المُعادة: من النوع [[JavaScript/Boolean|<boolean>]].
يُحدد التابع <code>path.isAbsolute()‎</code> ما إذا كان المسار <code>path</code> مساراً مطلقا.
يُحدد التابع <code>path.isAbsolute()‎</code> ما إذا كان المسار <code>path</code> مسارًا مطلقًا.


إذا كان <code>path</code> سلسلة نصية ذات طول صفري، ستُعاد القيمة <code>false</code>.
إذا كان <code>path</code> سلسلة نصية ذات طول صفري، ستُعاد القيمة <code>false</code>.
سطر 175: سطر 173:
path.isAbsolute('qux/');    // false
path.isAbsolute('qux/');    // false
path.isAbsolute('.');        // false
path.isAbsolute('.');        // false
</syntaxhighlight>في Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>في ويندوز:<syntaxhighlight lang="javascript">
path.isAbsolute('//server');    // true
path.isAbsolute('//server');    // true
path.isAbsolute('\\\\server');  // true
path.isAbsolute('\\\\server');  // true
سطر 183: سطر 181:
path.isAbsolute('bar/baz');    // false
path.isAbsolute('bar/baz');    // false
path.isAbsolute('.');          // false
path.isAbsolute('.');          // false
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.


== <code>path.join([...paths])‎</code> ==
== <code>path.join([...paths])‎</code> ==
سطر 197: سطر 195:
path.join('foo', {}, 'bar');
path.join('foo', {}, 'bar');
// طرح 'TypeError: Path must be a string. Received {}'
// طرح 'TypeError: Path must be a string. Received {}'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان أي من مقاطع المسار ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان أي من مقاطع المسار ليس سلسلة نصية.


== <code>path.normalize(path)‎</code> ==
== <code>path.normalize(path)‎</code> ==
سطر 205: سطر 203:
يضبط التابع <code>path.normalize()‎</code> المسار <code>path</code> المُعطى، مع حل كل من المقاطع <code>'..'</code> و <code>'.'</code>.
يضبط التابع <code>path.normalize()‎</code> المسار <code>path</code> المُعطى، مع حل كل من المقاطع <code>'..'</code> و <code>'.'</code>.


عند العثور على أحرف الفواصل لمقاطع المسار المتعددة المتتالية، (على سبيل المثال <code>/</code> في POSIX وأيًا من <code>\</code> أو <code>/</code> في Windows)، فستُستبدل بمثيل مُفرد من أحرف فواصل المقاطع الخاصة بمنصة التشغيل ( <code>/</code> في POSIX و <code>\</code> في Windows). ويُحتفَظ بالفواصل اللاحقة.
عند العثور على أحرف الفواصل لمقاطع المسار المتعددة المتتالية، (على سبيل المثال <code>/</code> في POSIX وأيًا من <code>\</code> أو <code>/</code> في ويندوز)، فستُستبدل بمثيل مُفرد من أحرف فواصل المقاطع الخاصة بمنصة التشغيل ( <code>/</code> في POSIX و <code>\</code> في ويندوز). ويُحتفَظ بالفواصل اللاحقة.


إذا كانت سلسلة المسار <code>path</code> ذات طول صفري، ستُعاد علامة <code>'.'</code>، ممثلةً مجلد العمل الحالي.
إذا كانت سلسلة المسار <code>path</code> ذات طول صفري، ستُعاد علامة <code>'.'</code>، ممثلةً مجلد العمل الحالي.
سطر 212: سطر 210:
path.normalize('/foo/bar//baz/asdf/quux/..');
path.normalize('/foo/bar//baz/asdf/quux/..');
// إعادة: '/foo/bar/baz/asdf'
// إعادة: '/foo/bar/baz/asdf'
</syntaxhighlight>وفي Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>وفي ويندوز:<syntaxhighlight lang="javascript">
path.normalize('C:\\temp\\\\foo\\bar\\..\\');
path.normalize('C:\\temp\\\\foo\\bar\\..\\');
// إعادة: 'C:\\temp\\foo\\'
// إعادة: 'C:\\temp\\foo\\'
</syntaxhighlight>ولما كان Windows يتعرف على فواصل المسار المتعددة، ستُستبدل كلٌ من الفاصلين بمثيلات من فاصل Windows المفضل (<code>\</code>):<syntaxhighlight lang="javascript">
</syntaxhighlight>ولما كان ويندوز يتعرف على فواصل المسار المتعددة، ستُستبدل كلٌ من الفاصلين بمثيلات من فاصل ويندوز المفضل (<code>\</code>):<syntaxhighlight lang="javascript">
path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar');
path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar');
// إعادة: 'C:\\temp\\foo\\bar'
// إعادة: 'C:\\temp\\foo\\bar'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.


== <code>path.parse(path)‎</code> ==
== <code>path.parse(path)‎</code> ==
سطر 240: سطر 238:
//  ext: '.txt',
//  ext: '.txt',
//  name: 'file' }
//  name: 'file' }
</syntaxhighlight>وفي Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>وفي ويندوز:<syntaxhighlight lang="javascript">
path.parse('C:\\path\\dir\\file.txt');
path.parse('C:\\path\\dir\\file.txt');
// إعادة:
// إعادة:
سطر 248: سطر 246:
//  ext: '.txt',
//  ext: '.txt',
//  name: 'file' }
//  name: 'file' }
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان المسار <code>path</code> ليس سلسلة نصية.


== <code>path.posix</code> ==
== <code>path.posix</code> ==
سطر 277: سطر 275:
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// إعادة: '../../impl/bbb'
// إعادة: '../../impl/bbb'
</syntaxhighlight>في Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>في ويندوز:<syntaxhighlight lang="javascript">
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
// إعادة: '..\\..\\impl\\bbb'
// إعادة: '..\\..\\impl\\bbb'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان أي من <code>from</code> أو <code>to</code> ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان أي من <code>from</code> أو <code>to</code> ليس سلسلة نصية.


== <code>path.resolve([...paths])‎</code> ==
== <code>path.resolve([...paths])‎</code> ==
سطر 306: سطر 304:
// إذا كان مجلد العمل الحالي هو /home/myself/node,
// إذا كان مجلد العمل الحالي هو /home/myself/node,
// سيُعاد '/home/myself/node/wwwroot/static_files/gif/image.gif'
// سيُعاد '/home/myself/node/wwwroot/static_files/gif/image.gif'
</syntaxhighlight>يُطرح <code>[[Node.js/error|TypeError]]</code> إذا كان أي من الوسائط ليس سلسلة نصية.
</syntaxhighlight>يرمى <code>[[JavaScript/TypeError|TypeError]]</code> إذا كان أي من الوسائط ليس سلسلة نصية.


== <code>path.sep</code> ==
== <code>path.sep</code> ==
سطر 318: سطر 316:
// إعادة
// إعادة
: ['foo', 'bar', 'baz']
: ['foo', 'bar', 'baz']
</syntaxhighlight>على Windows:<syntaxhighlight lang="javascript">
</syntaxhighlight>على ويندوز:<syntaxhighlight lang="javascript">
'foo\\bar\\baz'.split(path.sep);
'foo\\bar\\baz'.split(path.sep);
// إعادة: ['foo', 'bar', 'baz']
// إعادة: ['foo', 'bar', 'baz']
</syntaxhighlight>في Windows، يقبل كل من الشرطة المائلة الأمامية (<code>/</code>) والشرطة المائلة الخلفية (<code>\</code>) كفاصل مقاطع المسار؛ ومع ذلك، يضيف تابع <code>path</code> فقط الشرطة المائلة الخلفية(<code>\</code>).
</syntaxhighlight>في ويندوز، يقبل كل من الشرطة المائلة الأمامية (<code>/</code>) والشرطة المائلة الخلفية (<code>\</code>) كفاصل مقاطع المسار؛ ومع ذلك، يضيف تابع <code>path</code> فقط الشرطة المائلة الخلفية(<code>\</code>).


== <code>path.toNamespacedPath(path)‎</code> ==
== <code>path.toNamespacedPath(path)‎</code> ==
سطر 327: سطر 325:
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* <code>path</code> من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
* القيمة المُعادة: من النوع [[JavaScript/String|<string>]].
يعيد [https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces مسارًا مسبوقًا بمجال الأسماء ( namespace-prefixed path)] يكافئ المسار المُعطى <code>path</code>، في أنظمة Windows فقط. إذا لم يكن المسار <code>path</code> سلسلة نصية، سيعيد المسار <code>path</code> دون تعديلات.
يعيد [https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces مسارًا مسبوقًا بمجال الأسماء ( namespace-prefixed path)] يكافئ المسار المُعطى <code>path</code>، في أنظمة ويندوز فقط. إذا لم يكن المسار <code>path</code> سلسلة نصية، سيعيد المسار <code>path</code> دون تعديلات.


هذا التابع مفيد فقط في نظام Windows. في أنظمة posix، لا يعمل هذا التابع ويعيد دومًا المسار <code>path</code> دون تعديلات.
هذا التابع مفيد فقط في نظام ويندوز. في أنظمة POSIX، لا يعمل هذا التابع ويعيد دومًا المسار <code>path</code> دون تعديلات.


== <code>path.win32</code> ==
== <code>path.win32</code> ==
سطر 336: سطر 334:
تُمكن الخاصية <code>path.win32</code> من الوصول إلى تطبيقات Windows المُحدَدة لتوابع المسار <code>path</code>.
تُمكن الخاصية <code>path.win32</code> من الوصول إلى تطبيقات Windows المُحدَدة لتوابع المسار <code>path</code>.


= مصادر =
== مصادر ==
* <span> </span>[https://nodejs.org/dist/latest-v10.x/docs/api/path.html صفحة المسار (Path) في توثيق Node.js الرسمي.]
* <span> </span>[https://nodejs.org/dist/latest-v10.x/docs/api/path.html صفحة المسار (Path) في توثيق Node.js الرسمي.]
[[تصنيف:Node.js]]
[[تصنيف:Node.js|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 11:16، 23 أكتوبر 2018

مؤشر الاستقرار: 2 - مستقر.

توفر وحدة المسار path أدوات للعمل مع مسارات الملفات والمجلدات. ويمكن الوصول إليها باستخدام:

const path = require('path');

ويندوز في مقابل POSIX

يختلف التشغيل الإفتراضي لوحدة path استنادًا إلى نظام التشغيل الذي يعمل عليه أحد تطبيقات Node.js. على وجه التحديد، عند تشغيل نظام تشغيل ويندوز، ستفترض وحدة path استخدام نمط ويندوز للمسارات.

على سبيل المثال، استخدام الدالة path.basename()‎ مع مسار ويندوز للملف C:\temp\myfile.html، وسيُسفر ذلك عن نتائج مختلفة عند تشغيله على نظام يتبع معايير POSIX عمّا هو الحال عند تشغيله على ويندوز:

في POSIX:

path.basename('C:\\temp\\myfile.html');
// إعادة: 'C:\\temp\\myfile.html'

في ويندوز:

path.basename('C:\\temp\\myfile.html');
// إعادة: 'myfile.html'

يُستخدم path.win32 لتحقيق نتائج متسقة عند العمل مع مسارات ملفات ويندوز على أي نظام تشغيل: على POSIX وويندوز:

path.win32.basename('C:\\temp\\myfile.html');
// إعادة: 'myfile.html'

يُستخدم path.posix لتحقيق نتائج متسقة عند العمل مع مسارات ملفات POSIX على أي نظام التشغيل:

path.posix.basename('/tmp/myfile.html');
// إعادة: 'myfile.html'

ملاحظة: يتبع Node.js على Windows مفهوم مجلد العمل لكل محرك أقراص. ويمكن ملاحظة هذا السلوك عند استخدام مسار محرك أقراص بدون الشرطة المائلة العكسية. على سبيل المثال، يحتمل أن يعيد path.resolve('c:\\')‎ نتيجة مختلفة عن path.resolve('c:')‎. للحصول على مزيد من المعلومات، راجع هذه الصفحة على MSDN.

path.basename(path[, ext])‎

سجل التغييرات

الإصدار التغييرات
v6.0.0 تمرير قيمة ليست سلسلة نصية كوسيط المسار path سيُطرح الآن.
v0.1.25 أُضيف مع الإصدار: v0.1.25.
  • path من النوع <string>.
  • ext من النوع <string> امتداد اختياري لاسم الملف.
  • القيمة المُعادة: من النوع <string>.

تُعيد توابع path.basename()‎ الجزء الأخير من path، كما هو الحال مع الأمر basename في يونكس. تُتجاهل فواصل المجلدات الملحقة، انظر path.sep.

path.basename('/foo/bar/baz/asdf/quux.html');
// إعادة: 'quux.html'

path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// إعادة: 'quux'

يرمى TypeError إذا كان المسار path ليس سلسلة نصية أو إذا توفر ext و كان ليس سلسلة نصية.

path.delimiter

أُضيف مع الإصدار: v0.9.3.

توفير مُحدِّد مسار محدد بحسب المنصة:

  • ; لنظام التشغيل ويندوز.
  • : لنظام التشغيل 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']

في ويندوز:

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.dirname(path)‎

سجل التغييرات

الإصدار التغييرات
v6.0.0 تمرير قيمة ليست سلسلة نصية كوسيط المسار path سيُطرح الآن.
v0.1.25 أُضيف مع الإصدار: v0.1.25.
  • path من النوع <string>.
  • القيمة المُعادة: من النوع <string>.

يُعيد التابع path.dirname()‎ اسم المجلد للمسار path، كما هو الحال مع الأمر dirname في يونكس. تُتجاهل فواصل المجلدات الملحقة، انظر path.sep.

path.dirname('/foo/bar/baz/asdf/quux');
// إعادة
: '/foo/bar/baz/asdf'

يرمي TypeError إذا كان المسار path ليس سلسلة نصية.

path.extname(path)‎

  • path من النوع <string>.
  • القيمة المُعادة: من النوع <string>.

يُعيد التابع path.extname()‎ امتداد المعامل path، من آخر تواجد لعلامة النقطة '.' إلى نهاية السلسلة النصية في الجزء الأخير من path. تُعاد سلسلة نصية فارغة إذا لم يكن هناك نقطة '.' في الجزء الأخير من المسار path، أو إذا كان الحرف الأول من basename من المسار path هو النقطة '.' (راجع path.basename()‎).

path.extname('index.html');
// إعادة: '.html'

path.extname('index.coffee.md');
// إعادة: '.md'

path.extname('index.');
// إعادة: '.'

path.extname('index');
// إعادة: ''

path.extname('.index');
// إعادة: ''

يرمى TypeError إذا كان المسار path ليس سلسلة نصية.

path.format(pathObject)‎

أُضيف مع الإصدار: v0.11.15.

يُعيد التابع path.format()‎ سلسلة مسار من كائنٍ ما. وهو يعمل بعكس path.parse()‎.

عند توفير خصائص pathObject تذكر أن هناك عدة تركيبات منها بحيث يكون هناك أولوية لخاصية ما على الأخرى:

  • يُتجاهل pathObject.root إذا توفَّر pathObject.dir.
  • يُتجاهل كلٌ من pathObject.ext و pathObject.name في حالة وجود pathObject.base.

على سبيل المثال، في POSIX:

// إذا توفَّر `dir` و` root` و` base` ،
// سيُعاد `${dir}${path.sep}${base}`
// ويُتجاهل `root`.
path.format({
  root: '/ignored',
  dir: '/home/user/dir',
  base: 'file.txt'
});
// يُعيد: '/home/user/dir/file.txt'

// يُستخدم `root` إذا لم يُحدد `dir`.
// إذا توفَّر `root` أو كان `dir` يساوي `root`
// لن يُتضمَّن فاصل النظام الأساسي. ويُتجاهل `ext`.
path.format({
  root: '/',
  base: 'file.txt',
  ext: 'ignored'
});
// يُعيد: '/file.txt'

// يُستخدم `name` + `ext` إذا لم يُحدد `base`.
path.format({
  root: '/',
  name: 'file',
  ext: '.txt'
});
// يُعيد: '/file.txt'

في ويندوز:

path.format({
  dir: 'C:\\path\\dir',
  base: 'file.txt'
});
// إعادة: 'C:\\path\\dir\\file.txt'

path.isAbsolute(path)‎

أُضيف مع الإصدار: v0.11.2.

  • path من النوع <string>.
  • القيمة المُعادة: من النوع <boolean>.

يُحدد التابع path.isAbsolute()‎ ما إذا كان المسار path مسارًا مطلقًا.

إذا كان path سلسلة نصية ذات طول صفري، ستُعاد القيمة false.

على سبيل المثال، في POSIX:

path.isAbsolute('/foo/bar'); // true
path.isAbsolute('/baz/..');  // true
path.isAbsolute('qux/');     // false
path.isAbsolute('.');        // false

في ويندوز:

path.isAbsolute('//server');    // true
path.isAbsolute('\\\\server');  // true
path.isAbsolute('C:/foo/..');   // true
path.isAbsolute('C:\\foo\\..'); // true
path.isAbsolute('bar\\baz');    // false
path.isAbsolute('bar/baz');     // false
path.isAbsolute('.');           // false

يرمى TypeError إذا كان المسار path ليس سلسلة نصية.

path.join([...paths])‎

أُضيف مع الإصدار: v0.1.16.

  • ‎...paths من النوع <string> وهو تسلسل مقاطع المسار.
  • القيمة المُعادة: من النوع <string>.

يضم التابع path.join()‎ جميع مقاطع المسار path المعطى معا باستخدام المُحدِّد الفاصل الخاص بمنصة التشغيل، ثم يضبط المسار الناتج.

تُتجاهل مقاطع المسار path ذات الطول الصفري. إذا كانت سلسلة المسار المنضمة ذات طول صفري، ستُعاد علامة '.'، ممثلةً مجلد العمل الحالي.

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// إعادة: '/foo/bar/baz/asdf'

path.join('foo', {}, 'bar');
// طرح 'TypeError: Path must be a string. Received {}'

يرمى TypeError إذا كان أي من مقاطع المسار ليس سلسلة نصية.

path.normalize(path)‎

أُضيف مع الإصدار: v0.1.23.

  • path من النوع <string>.
  • القيمة المُعادة: من النوع <string>.

يضبط التابع path.normalize()‎ المسار path المُعطى، مع حل كل من المقاطع '..' و '.'.

عند العثور على أحرف الفواصل لمقاطع المسار المتعددة المتتالية، (على سبيل المثال / في POSIX وأيًا من \ أو / في ويندوز)، فستُستبدل بمثيل مُفرد من أحرف فواصل المقاطع الخاصة بمنصة التشغيل ( / في POSIX و \ في ويندوز). ويُحتفَظ بالفواصل اللاحقة.

إذا كانت سلسلة المسار path ذات طول صفري، ستُعاد علامة '.'، ممثلةً مجلد العمل الحالي.

على سبيل المثال، في POSIX:

path.normalize('/foo/bar//baz/asdf/quux/..');
// إعادة: '/foo/bar/baz/asdf'

وفي ويندوز:

path.normalize('C:\\temp\\\\foo\\bar\\..\\');
// إعادة: 'C:\\temp\\foo\\'

ولما كان ويندوز يتعرف على فواصل المسار المتعددة، ستُستبدل كلٌ من الفاصلين بمثيلات من فاصل ويندوز المفضل (\):

path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar');
// إعادة: 'C:\\temp\\foo\\bar'

يرمى TypeError إذا كان المسار path ليس سلسلة نصية.

path.parse(path)‎

أُضيف مع الإصدار: v0.11.15.

  • path من النوع <string>.
  • القيمة المُعادة: من النوع <Object>.

يُعيد التابع path.parse()‎ كائنًا تمثل خصائصه عناصر هامة من المسار path. تُتجاهل فواصل المجلدات الملحقة، انظر path.sep.

سوف يكون للكائن المُعاد الخصائص التالية:

على سبيل المثال، في POSIX:

path.parse('/home/user/dir/file.txt');
// إعادة:
// { root: '/',
//   dir: '/home/user/dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

وفي ويندوز:

path.parse('C:\\path\\dir\\file.txt');
// إعادة:
// { root: 'C:\\',
//   dir: 'C:\\path\\dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

يرمى TypeError إذا كان المسار path ليس سلسلة نصية.

path.posix

أُضيف مع الإصدار: v0.11.15.

تُمكن الخاصية path.posix من الوصول إلى تطبيقات POSIX المُحدَدة لتوابع المسار path.

path.relative(from, to)‎

سجل التغييرات

الإصدار التغييرات
v6.8.0 في Windows ، تُعاد الآن الشرطات الأمامية السابقة متضمَنة مع مسارات UNC.
v0.5.0 أُضيف مع الإصدار: v0.5.0

يُعيد التابع path.relative()‎ المسار النسبي من from حتي to بالنسبة لمجلد العمل الحالي. إذا كان from و to يؤديان إلى نفي المسار (بعد استدعاء path.resolve()‎ في كل منهما)، تُعاد سلسلة نصية ذات طول صفري.

إذا مُررِت سلسلة ذات طول صفري في from أو to، سيستخدم مُجلد العمل الحالي بدلاً من السلاسل النصية ذات الطول الصفري.

على سبيل المثال، في POSIX:

path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
// إعادة: '../../impl/bbb'

في ويندوز:

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');
// إعادة: '..\\..\\impl\\bbb'

يرمى TypeError إذا كان أي من from أو to ليس سلسلة نصية.

path.resolve([...paths])‎

أُضيف مع الإصدار: v0.3.4.

  • ...paths من النوع <string> وهو تسلسل من المسارات أو مقاطع المسار.
  • القيمة المُعادة: من النوع <string>.

يحل التابع path.resolve()‎ سلسلة من المسارات أو مقاطع المسار إلى مسارٍ مطلق.

يعالج تسلسل مسارات المُعطى من اليمين إلى اليسار، مع كل مسار path تالٍ سبق إرفاقه حتى يُنشأ مسار مطلق. على سبيل المثال، في ضوء تسلسل مقاطع المسار: ‎/foo, /bar, baz, استدعاء path.resolve('/foo', '/bar', 'baz')‎ سيُعيد ‎/bar/baz.

إذا لم ينشأ مسار مطلق بعد معالجة جميع مقاطع المسار المعطى path، يُستخدام مُجلد العمل الحالي.

المسار الناتج منضبط وتُزال الشرطات المائلة المذيِّلة ما لم يشير المسار إلى الدليل الجذر.

تُتجاهل مقاطع المسار path ذات الطول الصفري.

إذا لم تُمرر مقاطع المسار path، سيعيد path.resolve()‎ المسار المطلق لمجلد العمل الحالي.

path.resolve('/foo/bar', './baz');
// إعادة: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// إعادة: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// إذا كان مجلد العمل الحالي هو /home/myself/node,
// سيُعاد '/home/myself/node/wwwroot/static_files/gif/image.gif'

يرمى TypeError إذا كان أي من الوسائط ليس سلسلة نصية.

path.sep

أُضيف مع الإصدار: v0.7.9.

يوفر فاصل مقاطع المسار الخاص بمنصة التشغيل:

  • \ في Windows
  • / في POSIX

على سبيل المثال، على POSIX:

'foo/bar/baz'.split(path.sep);
// إعادة
: ['foo', 'bar', 'baz']

على ويندوز:

'foo\\bar\\baz'.split(path.sep);
// إعادة: ['foo', 'bar', 'baz']

في ويندوز، يقبل كل من الشرطة المائلة الأمامية (/) والشرطة المائلة الخلفية (\) كفاصل مقاطع المسار؛ ومع ذلك، يضيف تابع path فقط الشرطة المائلة الخلفية(\).

path.toNamespacedPath(path)‎

أُضيف مع الإصدار: v9.0.0.

  • path من النوع <string>.
  • القيمة المُعادة: من النوع <string>.

يعيد مسارًا مسبوقًا بمجال الأسماء ( namespace-prefixed path) يكافئ المسار المُعطى path، في أنظمة ويندوز فقط. إذا لم يكن المسار path سلسلة نصية، سيعيد المسار path دون تعديلات.

هذا التابع مفيد فقط في نظام ويندوز. في أنظمة POSIX، لا يعمل هذا التابع ويعيد دومًا المسار path دون تعديلات.

path.win32

أُضيف مع الإصدار: v0.11.15.

تُمكن الخاصية path.win32 من الوصول إلى تطبيقات Windows المُحدَدة لتوابع المسار path.

مصادر