Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/amekusa/develarms
Alternative `devDependencies` resolver that doesn't waste disk space
https://github.com/amekusa/develarms
cli dependency-manager developer-tools npm-package
Last synced: about 1 month ago
JSON representation
Alternative `devDependencies` resolver that doesn't waste disk space
- Host: GitHub
- URL: https://github.com/amekusa/develarms
- Owner: amekusa
- License: isc
- Created: 2022-12-17T11:21:31.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-02-12T07:02:34.000Z (11 months ago)
- Last Synced: 2024-11-28T23:18:18.086Z (about 2 months ago)
- Topics: cli, dependency-manager, developer-tools, npm-package
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/develarms
- Size: 128 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# ![DevelArms](https://raw.githubusercontent.com/amekusa/develarms/master/logo.png)
Alternative `devDependencies` resolver that doesn't waste disk space[![npm package](https://img.shields.io/badge/dynamic/json?label=npm%0Apackage&query=%24%5B%27dist-tags%27%5D%5B%27latest%27%5D&url=https%3A%2F%2Fregistry.npmjs.org%2Fdevelarms%2F)](https://www.npmjs.com/package/develarms)
## Q. What's this?
This is a CLI program to install/manage the development tools of your project, such as `rollup`, `mocha`, `c8`, `jsdoc`, or whatsoever.## Q. Why not just use `devDependencies` ?
The tools like listed above should be installed/used as **global** packages, because they are just commandline utilities.
Assuming you are working on many projects that require these tools, it would be a huge waste of disk space if you install them as `devDependencies` of each project separately like this:```
project1/
└── node_modules/
├── [email protected]
└── [email protected]
project2/
└── node_modules/
├── [email protected] (duplicate)
└── [email protected]
project3/
└── node_modules/
├── [email protected] (duplicate)
└── [email protected]
```DevelArms can solve this problem to like this:
```
node_modules/ (global)
├── [email protected]
├── [email protected]
└── [email protected]project1/
project2/
project3/
└── node_modules/
└── [email protected]
```## Installation
Local:
```sh
npm i --save-dev develarms
```Global:
```sh
npm i -g develarms
```## Usage
### Adding dependencies to your project
```sh
# example
develarms i rollup mocha
```The above command installs `rollup` and `mocha` packages by internally executing:
```sh
npm i --no-save rollup mocha
```Thanks to `--no-save` option, this command doesn't affect `dependencies` nor `devDependencies` in your `package.json`. Instead, the command adds **`develarms`** property, and stores the installed packages info as its properties like this:
```jsonc
// package.json
{
"name": "my-project",
...
"develarms": {
"rollup": "^3.28.0",
"mocha": "^10.2.0"
}
}
```### Installing dependencies
```sh
develarms i
```This command installs all the packages (let's say "dependencies") listed in `develarms` property in your `package.json` in the same manner as `npm i` command with `dependencies/devDependencies` properties.
The big difference from `npm i` command (and the sole purpose of this tool) is however, if you already have *globally* installed some of the dependencies on your machine, `develarms i` command **skips installing them** to save the storage space of your machine.
So, for example, if you have already installed recent version of `rollup` globally before, but have never installed `mocha`, and now run:
```sh
develarms i rollup mocha
```Then, the command only installs `mocha`, skipping `rollup` which you already have on your machine.
By default, `develarms i` command installs packages *locally*. You can change this behavior by passing `-g` option to force it install *globally*:
```sh
develarms i -g
```### Other commands & options
```sh
develarms --help
``````sh
Options:
-V, --version output the version number
-c, --config config file (default: "package.json")
-k, --config-key key of config object (default: "develarms")
-n, --dry-run do not actually perform the operation
-v, --verbose output detailed messages for debug
-h, --help display help for commandCommands:
list|ls [options] list dependencies
install|i [options] [packages...] install dependencies
uninstall|rm uninstall dependencies
upgrade|up [options] [packages...] upgrade dependencies
help [command] display help for command
```## Usage examples
### Custom config key
If you prefer more semantic name than `develarms` for the property in `package.json`, it can be changed with `--config-key` or `-k` option, like this:```sh
develarms i mocha -k globalDependencies
```Resulting `package.json`:
```jsonc
{
...
"globalDependencies": {
"mocha": "^10.2.0"
}
}
```---
develarms © 2022 Satoshi Soma (https://github.com/amekusa)