Node.js module for manipulating extended attributes.
npm install fs-xattrNode.js module for manipulating extended attributes.
There are already some libraries for this, why use fs-xattr?
- Very useful errors
- No limits on value size
- Clean and easy api
- Proper asynchronous implementation
``sh`
npm install --save fs-xattr
`javascript
import { getAttribute, setAttribute } from 'fs-xattr'
await setAttribute('index.js', 'user.linusu.test', 'Hello, World!')
console.log(await getAttribute('index.js', 'user.linusu.test'))
//=> Hello, World!
`
- path (string, required)attr
- (string, required)Promise
- returns - a Promise that will resolve with the value of the attribute.
Get extended attribute attr from file at path.
- path (string, required)attr
- (string, required)Buffer
- returns
Synchronous version of getAttribute.
- path (string, required)attr
- (string, required)value
- (Buffer or string, required)Promise
- returns - a Promise that will resolve when the value has been set.
Set extended attribute attr to value on file at path.
- path (string, required)attr
- (string, required)value
- (Buffer or string, required)
Synchronous version of setAttribute.
- path (string, required)attr
- (string, required)Promise
- returns - a Promise that will resolve when the value has been removed.
Remove extended attribute attr on file at path.
- path (string, required)attr
- (string, required)
Synchronous version of removeAttribute.
- path (string, required)Promise
- returns - a Promise that will resolve with an array of strings, e.g. ['user.linusu.test', 'com.apple.FinderInfo'].
List all attributes on file at path.
- path (string, required)Array
- returns
Synchronous version of listAttributes.
For the large majority of Linux filesystem there are currently 4 supported namespaces (user, trusted, security, and system) you can use. Some other systems, like FreeBSD have only 2 (user and system).
Be sure to use a namespace that is appropriate for your supported platforms. You can read more about this in the "Extended File Attributes" Wikipedia article.
Using a namespace like com.linusu.test` would work on macOS, but would give you the following error on Debian Linux:
> Error \[ENOTSUP]: The file system does not support extended attributes or has the feature disabled.