The :manager option for dependencies is for the tool that manages BUILDING the dependency, not how to fetch it. SCMs is how you fetch dependencies in Mix https://hexdocs.pm/mix/Mix.SCM.html#content. This is how Hex works: https://github.com/hexpm/hex/blob/master/lib/hex/scm.ex
Hex is a package manager for BEAM languages that run on the same virtual machine that Elixir runs. Hex is not part of Elixir. Why should we make a package manager for code that runs on a completely different virtual machine part of Elixir core when the package manager for Elixir code is not part of Elixir core? On Thu, Jun 8, 2017 at 2:24 PM, Aleksandr Pavliutin < [email protected]> wrote: > You talk about js build tools, I talk about deps manager. > > For example, in mix.exs I have {:bootstrap, '~> x.y.z', manager: :npm}. > I want mix fetch this package and deps from package.json to deps/ folder, > make package using "npm run build && npm install" if need in _build folder. > > After that I can build my assets using grunt, gulp, brunch, webpack from > deps/bootstrap or _build/dev/lib/bootstrap. > mix with npm module can make all my deps(and js too) and subdeps > idempotent, because mix have lock and cache mechanism. > > четверг, 8 июня 2017 г., 13:57:20 UTC+3 пользователь Norbert Melzer > написал: >> >> 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/ms >>>>> gid/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/ms >>> gid/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/60dd9df8-2eb7-46fa-ad29- > 0fd3f99db88b%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/60dd9df8-2eb7-46fa-ad29-0fd3f99db88b%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Eric Meadows-Jönsson -- 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/CAM_eapi_PD09TzwWsW1MAydKBmONip4_nOkL_t6JBiGjVAMQyw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
