fyn
Version:
fyn is the NPM for fynpo -- a zero setup monorepo tool
135 lines (105 loc) • 4.82 kB
Markdown
[![NPM version][npm-image]][npm-url]
[![Apache 2.0 License][apache-2.0-blue-image]][apache-2.0-url]
[![Build Status][build-image]][build-url]
[![Coverage Status][coveralls-image]][coveralls-url]
**fyn** is the package manager for [fynpo], a zero setup monorepo manager for node.js.
It treats your disk as a registry so you can develop, publish, and test all your packages using local copies directly.
Interested in giving it a quick test? Just install and run it on your project:
```sh
npm i -g fyn
cd <your-project>
fyn
```
Want to add a package on your local disk as a dependency to your project? Do this:
```sh
fyn add ../another-package
```
To see detailed stats about any package, use the `stat` command:
```sh
fyn stat lodash
```
- It can read and use some settings from your `.npmrc`.
- It can use `npm-shrinkwrap.json` or `package-lock.json` files.
fyn options can be listed in help:
```sh
fyn --help
```
fyn loads config from `CWD/.fynrc`, `CWD/.npmrc`, `~/.fynrc`, and `~/.npmrc` in this specified order, from highest to lowest priority.
From `.npmrc`, only fields `registry`, `@<scope>:registry`,`email`, and `_auth` are read.
`.fynrc` file can be an [ini] or `YAML` format. For the `YAML` format, the first line must be `---`.
Below is an `YAML` example, with all the options set to their default values:
```yml
---
registry: https://registry.npmjs.org
"@scope:registry": https://registry.custom.com
offline: false
forceCache: false
lockOnly: false
progress: normal
logLevel: info
production: false
centralStore: false
```
Or as an ini:
```ini
registry=https://registry.npmjs.org
@scope:registry=https://registry.custom.com
offline=false
forceCache=false
lockOnly=false
progress=normal
logLevel=info
production=false
centralStore=false
```
Node Package Manager is a very large and complex piece of software. Developing `fyn` was 10 times easier because of the generous open source software from the community, especially the individual packages that are part of `npm`.
Other than benefiting from the massive package ecosystem and all the documents from `npm`, these are the concrete packages from `npm` that `fyn` is using directly.
- [node-tar] - for untaring `tgz` files.
- [semver] - for handling Semver versions.
- [pacote] - for retrieving `npm` package data.
- [ini] - for handling `ini` config files.
- [npm-packlist] - for filtering files according to npm ignore rules.
- [npm-lifecycle] - for npm_config env and offering `run` as a convenience.
- [npmlog] - for offering the `run` command as a convenience.
- And all the other packages they depend on.
Copyright (c) 2015-2021, WalmartLabs
Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
[]: https://nodejs.org/dist/latest-v8.x/docs/api/cli.html#cli_node_options_options
[`-r` option]: https://nodejs.org/docs/latest-v6.x/api/cli.html#cli_r_require_module
[]: ./images/fyn-demo.gif
[]: https://www.npmjs.com/package/ini
[]: https://nodejs.org/docs/latest-v8.x/api/cli.html#cli_node_preserve_symlinks_1
[]: https://www.npmjs.com/package/require-at
[]: https://travis-ci.org/electrode-io/fyn.svg?branch=master
[]: https://travis-ci.org/electrode-io/fyn
[]: https://badge.fury.io/js/fyn.svg
[]: https://npmjs.org/package/fyn
[]: https://coveralls.io/repos/github/electrode-io/fyn/badge.svg?branch=master
[]: https://coveralls.io/github/electrode-io/fyn?branch=master
[]: https://david-dm.org/electrode-io/fyn/status.svg
[]: https://david-dm.org/electrode-io/fyn
[]: https://david-dm.org/electrode-io/fyn/dev-status.svg
[]: https://david-dm.org/electrode-io/fyn?type=dev
[]: https://img.shields.io/badge/License-Apache%202.0-blue.svg
[]: https://www.apache.org/licenses/LICENSE-2.0
[]: https://docs.npmjs.com/misc/scripts
[]: https://www.npmjs.com/package/tar
[]: https://www.npmjs.com/package/semver
[]: https://www.npmjs.com/package/pacote
[]: https://www.npmjs.com/package/ini
[]: https://www.npmjs.com/package/npm-packlist
[]: https://www.npmjs.com/package/pnpm
[]: https://www.npmjs.com/package/npm
[]: https://www.npmjs.com/package/lerna
[]: https://www.npmjs.com/package/fynpo
[]: https://docs.npmjs.com/cli/link.html
[]: https://www.npmjs.com/package/npm-lifecycle
[]: https://www.npmjs.com/package/npmlog
[]: https://github.com/jchip/fynpo/actions/workflows/ci.yml/badge.svg
[]: https://github.com/jchip/fynpo/actions/workflows/ci.yml
[]: https://github.com/jchip/fynpo