This use case does mostly affect Cordova contributors. Usually the platforms 
will come packaged, you’re right. The discussion of packaged-vs-installed is 
separate, but just as a nod to it: I don’t see a reason we can’t just 
automatically call “npm install” in platforms/ios/cordova. Copying over a 
package.json with fixed versions is no more complex than copying over 
node_modules.

Kindly,
Dmitry

> On Oct 28, 2015, at 1:33 PM, Steven Gill <stevengil...@gmail.com> wrote:
> 
> Currently, those modules ship with the platform. Example, cordova-ios will
> have all necessary modules bundled in. When you create a cordova project
> and add a platform, it takes those modules and moves them into your newly
> created cordova project. To have the cordova project run `npm install` and
> install those modules would require us include those modules in a project
> level `package.json` file for every cordova project that adds that
> platform. This would confuse developers for sure. I don't think we would
> have to modify requires to have this work.
> 
> To run `npm install` on those directories would also be very poor practice.
> By those directories, I assume you mean
> `MYCORDOVAPROJECT/platforms/ios/cordova` (this is where necessary
> node_modules from cordova-ios get copied). It would mean we would have to
> have a `package.json` be copied from `cordova-ios` into
> `MyCordovaProject/platforms/ios/cordova`. A cordova project would then at
> least have as many package.json files as platforms have been added. I think
> this is poor practice.
> 
> Your usecase of npm linking modules in platforms (cordova-ios/node_modules)
> that then get copied into `MYCORDOVAPROJECT/platforms/ios/cordova` is
> unique. I still think the best solution is to add some sort of check to
> make sure you haven't npm linked or handle the npm linked case when
> copying. Guess this problem will arise more often with cordova-common. That
> usecase pretty much only affects cordova contributors.
> 
> -Steve
> 
> On Wed, Oct 28, 2015 at 1:18 PM, Dmitry Blotsky <dblot...@microsoft.com>
> wrote:
> 
>> Is it possible to do “npm install” in those directories instead? Or to
>> adjust the path so that require() works with the original node_modules
>> directory?
>> 
>> Kindly,
>> Dmitry
>> 
>>> On Oct 27, 2015, at 10:31 PM, Steven Gill <stevengil...@gmail.com>
>> wrote:
>>> 
>>> I don't think we thought of symlinks in this usecase. Probably worth
>> adding
>>> in code that checks for symlinks before the copy. I don't see us removing
>>> this copy as the cordova scripts (build, run, install, etc) require those
>>> modules.
>>> 
>>> On Tue, Oct 27, 2015 at 9:24 PM, Dmitry Blotsky <dblot...@microsoft.com>
>>> wrote:
>>> 
>>>> Ping. Anyone have any information on this? Is it safe to "cp -r” a
>>>> node_modules directory?
>>>> 
>>>> Kindly,
>>>> Dmitry
>>>> 
>>>>> On Oct 26, 2015, at 3:06 PM, Dmitry Blotsky <dblot...@microsoft.com>
>>>> wrote:
>>>>> 
>>>>> Hey folks,
>>>>> 
>>>>> I’ve come across a bug with symlinks and platform installation
>> recently.
>>>> The point of interest is this line:
>>>> 
>> https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fgithub.com%2fapache%2fcordova-ios%2fblob%2f4039aeb6f87c6803df5814b8cdefb8c2058504a0%2fbin%2flib%2fcreate.js%23L93.&data=01%7c01%7cdblotsky%40microsoft.com%7c2b31253a23cc4d165ed808d2de51c9ef%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=cyXGPBQPr9v46gc6DMDeC9zZkzda8bSCIoinEyAmKrs%3d
>>>>> 
>>>>> Is copying node_modules a safe operation? In my case there was a
>>>> relative symlink inside it when it was copied and as a result some
>>>> dependencies broke. The symlink was created by a previous invocation of
>>>> “npm link”.
>>>>> 
>>>>> Kindly,
>>>>> Dmitry
>>>> 
>>>> 
>> 
>> 

Reply via email to