npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

prettier-plugin-coffeescript

v0.1.5

Published

Prettier Coffeescript Plugin

Downloads

4,850

Readme

Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary

This plugin adds support for the CoffeeScript language to Prettier

Install

This plugin currently requires a forked version of Prettier (in order to support things like implicit calls and objects, new Prettier primitives are required - here's the PR) as well as CoffeeScript v2.5.0 or higher.

So the best way to ensure that the required dependencies are available to the plugin is to explicitly install them in your project along with the plugin:

yarn:

yarn add --dev coffeescript@^2.5.0 github:helixbass/prettier#prettier-v2.1.0-dev.100-gitpkg prettier-plugin-coffeescript

npm:

npm install --save-dev coffeescript@^2.5.0 github:helixbass/prettier#prettier-v2.1.0-dev.100-gitpkg prettier-plugin-coffeescript

Usage

To run Prettier manually, you can add prettier as a script in your package.json,

{
  "scripts": {
    "prettier": "prettier"
  }
}

and then run it via

yarn run prettier path/to/file.coffee --write
# or
npm run prettier -- path/to/file.coffee --write

In practice, there are various ways to run Prettier:

  • most editors can be configured to run Prettier automatically (see below for instructions for specific editors)
  • Prettier can be configured to run via a linter like ESLint
  • you can enforce the usage of Prettier by having it run automatically before committing code

The "Usage" section of the Prettier docs describes how to set these up

Running in-editor

Depending on your editor, there may or may not currently be a straightforward way to get Prettier running against .coffee files (e.g. using a Prettier editor plugin).

If you're having trouble getting Prettier running in your editor (and it's not listed below), please file an issue and we'll try and help with support for your editor.

VS Code

To run Prettier from VS Code, first install the VS Code Prettier extension.

Then add to your VS Code settings.json:

"[coffeescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
}

Configuration

The following formatting options are supported:

| Name | Default | Description | | -------------- | ------------ | ----------------------------------------------------------------------------------------------- | | printWidth | 80 | Same as in Prettier (see prettier docs) | | tabWidth | 2 | Same as in Prettier (see prettier docs) | | singleQuote | true | If set to true, non-interpolated strings/heredocs will prefer single quotes ('abc'/'''I'm a heredoc''') | | comma | none | Applies to multiline arrays/calls/function params/explicit objects If set to none, no commas will be used If set to nonTrailing, commas will be added after non-last items If set to all, commas will be added after all items | | noImplicit | [] | If includes callParens, call parentheses will always be explicitly included If includes objectBraces, object braces will always be explicitly included | | respectExplicit | [] | If includes callParens, explicit call parentheses in the original source will be preserved If includes objectBraces, explicit object braces in the original source will be preserved | | respectBreak | ['control', 'functionBody', 'object'] | Applies to multiline structures in the original source If includes control, the formatter will not attempt to inline multiline control structures (if/unless/for/while/until/try) If includes functionBody, the formatter will not attempt to inline functions with indented bodies If includes object, the formatter will not attempt to inline multiline objects (similar to Prettier JS formatter) | | inlineAssignmentsTo | ['control'] | If includes control, will attempt to inline assignments of control structures | | emptyParamListParens | false | If set to true, functions with an empty param list will include an empty pair of parentheses eg () -> a | | indentChain | false | If set to true, multiline chained method calls will be indented with respect to the first line of the chain :warning: Warning :warning: Setting indentChain: true can currently cause broken formatting in some edge cases |

Any of these can be added to an existing or new Prettier configuration file. For example:

{
  "respectExplicit": ["objectBraces"],
}

Help / Contributing / Feedback

Please file an issue or submit a pull request on Github with any bugs/questions/suggestions

If you're interested in contributing to the development of this plugin, Prettier's CONTRIBUTING guide may be helpful

To get started:

  • Clone this repository
  • Run yarn install
  • Create a test.coffee file
  • Run yarn prettier test.coffee to check the output
  • You can adjust the project's .prettierrc file to temporarily adjust formatting options when running manually
  • Run yarn test while developing to see if any formatting snapshots have changed
  • To update the stored snapshots, run yarn test -u
  • Add new snapshot tests under tests/. New subdirectories need a jsfmt.spec.js file, where you can specify multiple different formatting option configurations for those snapshots if desired

License

MIT