Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Determine common OS/platform paths (home, temp, ...)
npm install os-paths
# or... `npm install github:rivy/js.os-paths`
# or... `npm install "https://cdn.jsdelivr.net/gh/rivy/js.os-paths@latest/dist/os-paths.tgz"`
const osPaths = require('os-paths');
const home = osPaths.home();
const temp = osPaths.temp();
import osPaths from 'os-paths';
const home = osPaths.home();
const temp = osPaths.temp();
import osPaths from 'https://deno.land/x/os_paths@v6.1.0/src/mod.deno.ts';
//or (via CDN, with optional version/version-range/latest/commit support)...
//import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths@6.1.0/src/mod.deno.ts'; // v6.1.0
//import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths@6/src/mod.deno.ts'; // v6.x.y
//import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths/src/mod.deno.ts'; // latest
//import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths@latest/src/mod.deno.ts'; // latest
const home = osPaths.home();
const temp = osPaths.temp();
OSPaths()
const osPaths = require('os-paths'); // CJS
//or...
//import osPaths from 'os-paths'; // ESM/TypeScript
//import osPaths from 'https://deno.land/x/os_paths@v6.1.0/src/mod.deno.ts'; // Deno
When importing this module, the object returned is a function object, OSPaths
, augmented with attached methods. Additional OSPaths
objects may be constructed by direct call of the imported OSPaths
object (eg, const p = osPaths()
) or by using new
(eg, const p = new osPaths()
). Notably, since the OSPaths
object contains no instance state, all OSPaths
objects will be functionally identical.
All methods return simple, platform-specific, and platform-compatible path strings which are normalized and have no trailing path separators.
The returned path strings are not guaranteed to already exist on the file system. So, the user is responsible for directory construction, if/when needed. However, since all of these are standard OS directories, they should all exist without the need for user intervention.
If/when necessary, make-dir
or mkdirp
can be used to create the directories.
osPaths.home(): string | undefined
undefined
if the user's home directory is not resolvable).console.log(osPaths.home());
//(*nix) => '/home/rivy
//(windows) => 'C:\Users\rivy'
osPaths.temp(): string
console.log(osPaths.temp());
//(*nix) => '/tmp'
//(windows) => 'C:\Users\rivy\AppData\Local\Temp'
temp()
will always return a non-empty path string (as sanely as possible).
Requirements
NodeJS >= 4.01
*.js
and *.cjs
)CJS is the basic supported output (with support for NodeJS versions as early as NodeJS-v4).
const osPaths = require('os-paths');
console.log(osPaths.home());
console.log(osPaths.temp());
*.mjs
)v6.0
+.OSPaths
fully supports ESM imports.
import osPaths from 'os-paths';
console.log(osPaths.home());
console.log(osPaths.temp());
*.ts
)v5.0
+.As of v5.0
+, OSPaths
has been converted to a TypeScript-based module.
As a consequence, TypeScript type definitions are automatically generated, bundled, and exported by the module.
v6.0
+.OSPaths
also fully supports use by Deno.
import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths@latest/src/mod.deno.ts';
//or (via CDN, with semver support)...
//import osPaths from 'https://cdn.jsdelivr.net/gh/rivy/js.os-paths@6/src/mod.deno.ts';
console.log(osPaths.home());
console.log(osPaths.temp());
optional
git-changelog
... enables changelog automation
npm install-test
> npm run help
...
usage: `npm run TARGET` or `npx run-s TARGET [TARGET..]`
TARGETs:
build build/compile package
clean remove build artifacts
coverage calculate and display (or send) code coverage [alias: 'cov']
fix fix package issues (automated/non-interactive)
fix:lint fix ESLint issues
fix:style fix Prettier formatting issues
help display help
lint check for package code 'lint'
lint:commits check for commit flaws (using `commitlint` and `cspell`)
lint:lint check for code 'lint' (using `eslint`)
lint:markdown check for markdown errors (using `remark`)
lint:spell check for spelling errors (using `cspell`)
lint:style check for format imperfections (using `prettier`)
realclean remove all generated files
rebuild clean and (re-)build project
retest clean and (re-)test project
reset:hard remove *all* generated files and reinstall dependencies
show:deps show package dependencies
test test package
test:code test package code
test:types test for type declaration errors (using `tsd`)
update update/prepare for distribution
update:changelog update CHANGELOG (using `git changelog ...`)
update:dist update distribution content
Contributions are welcome.
Any pull requests should be based off of the default branch (master
). And, whenever possible, please include tests for any new code, ensuring that local (via npm test
) and remote CI testing passes.
By contributing to the project, you are agreeing to provide your contributions under the same license as the project itself.
xdg-app-paths
... easy XDG for applicationsxdg-portable
... XDG Base Directory paths (cross-platform)With the conversion to a TypeScript-based project, due to tooling constraints, building and testing are more difficult and more limited on Node platforms earlier than NodeJS-v10. However, the generated CommonJS/UMD project code is fully tested (for NodeJS-v10+) and continues to be compatible with NodeJS-v4+. ↩
FAQs
Determine common OS/platform paths (home, temp, ...)
The npm package os-paths receives a total of 606,087 weekly downloads. As such, os-paths popularity was classified as popular.
We found that os-paths demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.