ldeluca
ldeluca

Reputation: 944

npm publish module includes iOS framework. When npm install of that module, the iOS framework is corrupt

This is the strangest issue and only happens on one iOS framework in particular (that i noticed) within an npm module.

when clicking on the framework (before npm publish) I see:

frameworkname.framework
|
- Headers (dir)
- frameworkname
- Versions (dir)
    |
    -A (dir)
    -Current (dir)

I published this module to a private npm server. When I install the npm module the framework is corrupt. I see:

frameworkname.framework
|
- Headers (dir) MISSING
- frameworkname MISSING
- Versions (dir)
    |
    -A (dir)
    -Current (dir) MISSING

After reading http://www.raywenderlich.com/65964/create-a-framework-for-ios it looks like the missing files are symlinks. Has anyone else seen this behavior before? How do I keep the symlinks from being lost during the npm process?

Upvotes: 7

Views: 306

Answers (1)

silyevsk
silyevsk

Reputation: 4566

The missing files are symbolic links, and unfortunately, npm doesn't support symbolic links. As a workaround, you can replace the links with their targets (and remove the targets to prevent duplication).

E.g. for a framework FFF with the structure:

./FFF -> Versions/Current/FFF
./Headers -> Versions/Current/Headers
./Versions
./Versions/A
./Versions/A/FFF
./Versions/A/Headers
./Versions/Current -> A

you can run the following (in bash) from inside the framework directory:

framework=FFF && rm $framework Headers && mv Versions/A/{$framework,Headers} . && rm -rf Versions

to change the structure to:

./FFF
./Headers

Upvotes: 1

Related Questions