jonschlinkert / dashify

Convert a string to a dash-separated string (kebab case). Works with camelcase, pascalcase, space-separated, etc.
MIT License
88 stars 15 forks source link

Add browser support #10

Closed dpikt closed 5 years ago

dpikt commented 5 years ago

Lib contains es6 features and should be built with babel to support all browsers.

dpikt commented 5 years ago

Or fat arrows should be replaced with function keyword.

jonschlinkert commented 5 years ago

How would this library get bundled into a web project without using a build system?

dpikt commented 5 years ago

It wouldn't, as far as I know. I'm personally using webpack. However, it is standard practice to provide a transpiled dist or lib folder of your library rather than requiring developers to transpile modules themselves. If not offering legacy support, the package should include a note in the readme like this.

jonschlinkert commented 5 years ago

It wouldn't, as far as I know. I'm personally using webpack.

Exactly my point.

However, it is standard practice to provide a transpiled dist or lib folder of your library rather than requiring developers to transpile modules themselves. If not offering legacy support, the package should include a note in the readme like this.

No this is a horrible and painful anti-pattern that should stop. Anyone who recommends this doesn't fully understand the implications of doing so. This is like arguing that a car should always be pulled around by a horse. Node.js libraries can only be used in the browser with tooling. By pre-compiling code, you are actually making it harder for downstream libraries to streamline your code in the browser. This will become even evident as ES modules gain prominence, and pre-compiling strips them of all of their benefits.

dpikt commented 5 years ago

Firstly, I agree that using pre-compiled code is suboptimal. The ideal solution is to make multiple distributions available so that the consumer can decide for themselves which version of the package they need. This is what other major libraries are doing in order to maintain browser support while offering opt-in module support.

Secondly, your comments this issue as well as https://github.com/jonschlinkert/dashify/issues/9 have been disingenuous and rude. I expect better from a member of the open source community- I come here to collaborate, not get called names. I will be migrating away from using this library since it's clear that adhering to best practices for isomorphic JS code is not your top priority.

Edit: To give you a sense of what an outlier this library is- I'm working on a project with the following dependencies:

 "dependencies": {
    "axios": "^0.16.2",
    "babel-polyfill": "^6.26.0",
    "better-queue": "^3.8.10",
    "bourbon": "^4.2.7",
    "bourbon-neat": "^1.9.0",
    "classnames": "^2.2.6",
    "compression": "^1.7.3",
    "cookies": "^0.7.1",
    "date-fns": "^1.29.0",
    "dot-index-webpack-plugin": "^5.0.0",
    "express": "^4.16.3",
    "express-enforces-ssl": "^1.1.0",
    "figaro-js": "^1.1.1",
    "formik": "^1.3.1",
    "fs-extra": "^7.0.0",
    "http-proxy-middleware": "^0.18.0",
    "humps": "^2.0.1",
    "localStorage": "^1.0.4",
    "lodash": "^4.17.10",
    "mini-css-extract-plugin": "^0.4.1",
    "prismic-javascript": "^1.5.0-beta.1",
    "prismic-reactjs": "^0.3.1",
    "prop-types": "^15.6.1",
    "prop-types-exact": "^1.2.0",
    "query-string": "^5.0.0",
    "react": "^16.0.0",
    "react-dom": "^16.0.0",
    "react-helmet": "^5.2.0",
    "react-router": "^4.2.0",
    "react-slick": "^0.23.1",
    "react-static": "^5.0.0",
    "recompose": "^0.27.1",
    "redux": "^3.6.0",
    "request": "^2.87.0",
    "sass-loader": "^7.0.3",
    "slick-carousel": "^1.8.1",
    "webpack": "^4.16.5",
    "wowjs": "^1.1.3"
  }

Every single one of these packages offers full browser support. This library was the only one that broke my code.

jonschlinkert commented 5 years ago

I come here to collaborate, not get called names

I'm sorry that we disagree, but this is false. I didn't call anyone names, and I answered your very strongly opinionated OP with an equally opinionated and unemotional reply, 100% void of any name calling. I did the same with the other issue you linked to. If you - or the person who created the other issue - don't want replies like this, then don't create contentiously worded issues that sound like you're making statements of fact. At least pretend that you want to have a discussion.

From your wording, you did not want to have a discussion, you were making a command: Lib contains es6 features and should be built with babel to support all browsers. That's okay, I don't take offense from your tone. I do, however, get anxiety knowing that this terrible anti-pattern is being promoted.

Secondly, your comments this issue as well as #9 have been disingenuous and rude.

You do realize that you are actually calling me names here, right? Also, I have to assume that you don't know what disingenuous means. I meant every word I said.

This is a very odd issue. Any person with an internet connection can easily review this issue, and the one you linked to, and all revisions of both, and see that there literally is not one place that I have ever called anyone a name. I don't do that.

I come here to collaborate, not get called names

Um.