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] <javascript:>> 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] <javascript:>.
>> 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/60dd9df8-2eb7-46fa-ad29-0fd3f99db88b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to