Yes, mix is part of elixir core. But JavaScript or NPM aren't. Both aren't related to elixir even in the slightliest. There is no need to pull in a dependency on nodejs or similar into the languages core, to make a feature available that only a small fraction of users need, if there is at all.
So far, I am happy with running npm_install once after the first clone of my project and on CI. The remainder of my buildstuff is heavily customized, and relies on various JS buildtools, since there is JavaScript generated from PureScript, Elm and ElixirScript. (Wan't to move to have only ElixirScript though). All of this is pretty well handled by a simple shell script. Also changes in the scriptfiles are very seldom such that it is only rarely needed to run. Even then, I do not consider all the JS stuff a dependency of my application. In fact, its a JavaScript implementation of a client to my application. My server side stuff does not depend on the existence of a client. The server is fine without. So I do not see any necessity to make my server software aware of all that JavaScript, except for delivering it to the clients browser. On the other hand side, that client has a hard dependency on the server, but only that it has to exist **somewhere**. Also it would be very nice if you could a little bit more effort into wording. I had a hard time to actually understand what you wanted in your last mail and I am still not sure if I got you right. Aleksandr Pavliutin <[email protected]> schrieb am Do., 8. Juni 2017 um 12:31 Uhr: > IMHO, if mix in elixir source tree, mix part of elixir core. > > Third party plugin will allow me to do like this > {:babel-core, '~> 6.24.1', manager: :npm, ovveride: true} or > {:babel-core, '~> 6.24.1', manager: :npm, only: [:dev, :test]} or > {:test_dep, '~> 0.1.1', git: "http://..../test_dep.git", manager: :npm} or > {:test_dep, path: '.../test_dep", manager: :npm} or > other case available for mix, make or rebar manager? > No, I don't think. > > May be good solution, split mix to core and managers with unified api. > The same situation, if elixir core team or phoenix team or other teem > won't support this manager, but they can apply pull request for this > manager. > > четверг, 8 июня 2017 г., 11:29:06 UTC+3 пользователь Norbert Melzer > написал: > >> Not every phoenix-project uses javascript, not every elixir project is >> phoenix. So this does not belong into mix or elixir core. Perhaps your >> proposal is better to be done to the phoenix team, but absolutely not in >> the elixir language core team. >> >> Even for phoenix I think it is a bad choice, since the phoenix team once >> said they won't force anyone to a certain javascript buildtool, which would >> essentially happen once they support a single one through mix tasks, while >> supporting all is essentially impossible. >> >> So please do roll your own third party plugin which does build the >> javascript for you and everyone else who chooses to use the same javascript >> buildsystem as you did. >> >> Aleksandr Pavliutin <[email protected]> schrieb am Do., 8. Juni >> 2017 um 10:21 Uhr: >> > As I undestand, mix part of Elixir *core*. Without mix you can't build >>> application more difficult than "hello world". >>> >>> I don't agree with Justin, this functionality not for third party >>> libraries, because mix have 90% for work with npm. >>> I can undestand this position if I propose make rust projects with mix >>> using cargo or something like this. >>> >>> Most of all phoenix projects have package.json and default build >>> instrustion "mix deps.get && npm install". >>> It would be great if all npm deps and builds store in main tree (deps >>> and _build/[MIX_ENV] folders). All brunch scripts would be more simple, >>> because they work with one dir in all projects. >>> >>> Mix have buildin functionality in core for make c/c++ projects and >>> erlang with rebar. And some erlang developers use mix for build they >>> projects instead rebar. >>> >>> четверг, 8 июня 2017 г., 1:57:46 UTC+3 пользователь José Valim написал: >>> >>>> What Justin Wood said: this definitely does not belong in Elixir >>>> *core*. This is a mailing list about the Elixir language and standard >>>> library. >>>> >>> >>>> >>>> >>>> *José Valim* >>>> www.plataformatec.com.br >>>> Skype: jv.ptec >>>> Founder and Director of R&D >>>> >>>> On Thu, Jun 8, 2017 at 12:43 AM, Justin Wood <[email protected]> >>>> wrote: >>>> >>> I think this functionality would be good for a third party library. Not >>>>> all Elixir applications would have use for something like this. >>>>> >>>> On Jun 7, 2017 6:41 PM, "Aleksandr Pavliutin" <[email protected]> >>>>> wrote: >>>>> >>>> It would be great, if I can manage node deps with mix. >>>>>> >>>>>> As I understand, logic same as for hex repo: >>>>>> - fetch need files from repo(github) using package.json config >>>>>> instead mix.exs, package.exs or rebar.config; >>>>>> - fetch dependencies for package using MIX_ENV; >>>>>> - save package, write metadata, lock and other; >>>>>> - run npm build and install scripts if need with >>>>>> NODE_ENV=production(if MIX_ENV == prod) or NODE_ENV = develompert if >>>>>> (MIX_ENV == dev or MIX_ENV == test); >>>>>> - make symlinks to executable files if need; >>>>>> >>>>>> I think problem only in semvers, they use caret ^ for versions, oftem >>>>>> this behaviour brakes build. >>>>>> Bower, npm don't have override or lock mechanism for fix this >>>>>> behaviour. >>>>>> Yarn try solve this problems, but many packages can't build(some >>>>>> issues open more than year), now they have 783 open issues. >>>>>> >>>>>> I think need simple functionality: >>>>>> npm.docs - open npmjs.com/package/[PACKAGE] >>>>>> <http://npmjs.com/package/%5BPACKAGE%5D> >>>>>> npm.info - print info >>>>>> npm.outdated - print outdated packages >>>>>> npm.search - search package >>>>>> >>>>>> May be good have many repos, and tools for manage npm repos. >>>>>> And I think don't need functionality for publishes packages in npm >>>>>> repo with mix. >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "elixir-lang-core" group. >>>>>> >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>>> an email to [email protected]. >>>>> >>>>> >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/elixir-lang-core/f6fac075-949a-45d5-9781-4f8077fb364b%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/f6fac075-949a-45d5-9781-4f8077fb364b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "elixir-lang-core" group. >>>>> >>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/elixir-lang-core/CAFsaqD_722qJj-YUoyo26sPLTSWaxX72X9sPJkoWzMZAu0%2BoWg%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/elixir-lang-core/CAFsaqD_722qJj-YUoyo26sPLTSWaxX72X9sPJkoWzMZAu0%2BoWg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "elixir-lang-core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/elixir-lang-core/21b8086b-a244-4343-9612-d2bab78fdef5%40googlegroups.com >>> <https://groups.google.com/d/msgid/elixir-lang-core/21b8086b-a244-4343-9612-d2bab78fdef5%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/c0794d20-d8e3-4279-b876-652550ffbac7%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/c0794d20-d8e3-4279-b876-652550ffbac7%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CA%2BbCVsucbFtoV%2BSRaUeiLfrM719u1adR2VEP7x8pk%3DLfEVsFfQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
