mongodb-js-fmt
Version:
Automatically rewrites our code to a shared spec because style is for tailors.
126 lines (85 loc) • 3.81 kB
Markdown
# :wave: Sunset
If you're seeing this message, it's because your module is still using `mongodb-js-fmt` which has been sunset. This project has been hanging around for far too long... `jsfmt` has long been replaced by `prettier` and editor's are now completely different. It no longer is, it was. :)
`mongodb-js-fmt` never even made it to a minor release, but it snuck into lots of project templates so I'm including this message to help cleanup.
Here's how to make this go away:
1. Remove `"fmt": "mongodb-js-fmt"` from `"scripts"` in your package.json
2. `npm uninstall --save-dev mongodb-js-fmt`
3. Install [prettier for the IDE/Editor of your choice](https://prettier.io/docs/en/editors.html)
4. If you see `"mongodb-js-fmt": "0.0.3"` in a friend's `package.json`, send them a PR or this link https://github.com/mongodb-js/fmt
## Why?
This project has been hanging around for far too long... `jsfmt` has long been replaced by `prettier` and editor's are now completely different.
Install [prettier for the IDE/Editor of your choice](https://prettier.io/docs/en/editors.html).
The README below is preserved for future travelers.
---
# mongodb-js-fmt [![travis][travis_img]][travis_url] [![npm][npm_img]][npm_url]
> Automatically rewrites [our code][mongodb-js] to [a shared spec][styleguide] because style is for tailors.
## Usage
```bash
npm install --save-dev mongodb-js-fmt
```
Add a new `fmt` script to your `package.json`:
```json
{
"name": "<your-module-name>",
"scripts": {
"fmt": "mongodb-js-fmt ./*.js lib/{**/*.js,*.js}"
}
}
```
Now run it to have your files rewritten:
```bash
npm run fmt
```
## How It Works
`mongodb-js-fmt` is merely a thin wrapper around a code
rewriter and canonical configuration file that defines the
rules the rewriter should apply so all of our
[code looks the same][styleguide] and we never have to
waste time on style in code reviews or arguing about
which rewriter tool is best.
Currently, we use [`jsfmt` from the Rdio team][jsfmt]
as the rewriter. It's been an essential part of our daily
workflow since mid-2014 and literally saves us each hours
of work per month.
> @todo: why does this module exist? package everything
> up in one box, strict control of upstreams, swap out
> the rewriter seamlessly when something better comes along
> e.g. want to ditch jsfmt for `eslint --autofix` +
> fb's amazing http://npm.im/jscodeshift
## Todo
```
--dry Display diffs instead of rewriting files [Default: `false`].
--changed Populate `<file>...` based on local changes via `git status` [Default: `false`].
```
### `--changed`
Use [`git ls-files`](http://git-scm.com/docs/git-ls-files) to populate `opts.files`
### `--dry`
Display diffs only and don't overwrite files.
## Atom Package
Just need to publish to apm? Just want one source of truth and to be able
to delete the 100's of duplicate `.jsfmtrc` files across our projects.
### [esformatter-collapse-objects](https://github.com/wbinnssmith/esformatter-collapse-objects)
It's really nice, but needs a little time to tweak configs a
bit to aggree w/ eslint rules. This allows for:
```javascript
var res = {formatted: [], unchanged: []};
```
instead of always forcing:
```javascript
var res = {
formatted: [],
unchanged: []
};
```
## License
Apache 2
[travis_img]: https://img.shields.io/travis/mongodb-js/fmt.svg
[travis_url]: https://travis-ci.org/mongodb-js/fmt
[npm_img]: https://img.shields.io/npm/v/mongodb-js-fmt.svg
[npm_url]: https://npmjs.org/package/mongodb-js-fmt
[mongodb-js]: http://mongodb-js.github.io/
[jsfmt]: https://github.com/rdio/jsfmt
[eslint]: http://eslint.org
[eslint-config-mongodb-js]: https://github.com/mongodb-js/eslint-config
[gofmt]: https://golang.org/cmd/gofmt/
[styleguide]: https://github.com/mongodb-js/javascript