npm install not installing the packages on a git repo clone. (giving no-replace-object and cannot store pack file error) - npm

trying to clone a git repo which has several npm dependencies, but it is failing with a pack error.enter image description here

Related

Is there a way to install an npm package locally but not affect package.json or package-lock.json?

I have a project that I'm working on for a client where I have two private packages (which I can't get access to npm install) are inside the package.json.
I do however have access to clone the repos for those said packages. If I simply run an npm install I'll get a permission denied error. Same if I run npm link to the packages.
I've been working around this by removing the packages from the package.json then running npm install ../some-package. This works but isn't a great solution because if I wanted to add a new package I'd have to deal with a bit of a mess with the package.json.
Is there a better way than this?
I have tried running npm link ../some-package but I still get access denied. The only way I've managed to complete an install is by removing the packages then installing them from a local dir.
I don't know the details of your situation, but I see at least two potential solutions to explore.
Option 1: Install the package from the repo
I do however have access to clone the repos for those said packages.
You can install from a git repo and package.json will record that git repo as the source of the package rather than the npm registry.
From the docs at https://docs.npmjs.com/cli/v8/commands/npm-install:
npm install :
Installs the package from the hosted git provider, cloning it with git. For a full git remote url, only that URL will be attempted.
Option 2: Install from the local file system with --no-save
If that approach doesn't work for you, you can try npm install --no-save ../some-package as a build step. The --no-save makes it so it doesn't modify package.json.

How to install a fork from github as a dependency?

I've made a fork of some repository and I need to use that fork as a dependency for my project.
Right now I do:
npm install angular --save
How do I change this to install a fork?
From the NPM documentation for the install command:
npm install <git remote url>
Installs the package from the hosted git provider, cloning it with git. First it tries via the https (git with github) and if that fails, via ssh.

NPM publish will copy the all files to NPM server or not?

I am successfully publish a package by following this official tutorial:
Does it mean NPM copy all my files to NPM server? Because the command I use is:
npm publish
No other params.
Whereas in Bower, the command I use is:
bower register raphael.backbone git://github.com/tomasAlabes/backbone.raphael.git
It is clearly the source is git repo, so bower is clearly a registry, not copying the project files.
Question:
"NPM publish " will copy my files to NPM server or not?
npm publish compresses your current working directory into a tarball and uploads it to the npm registry; so yes, npm publish will copy your files to npm server.
You actually don't have to use git for an npm package, though using it is a good idea to use version control for any software development.

Using NPM package which requires prepublish/build from Git

Currently NPM does not run prepublish after installing a package from a Git repository.
When working with a team (i.e: I cannot ask team members to run npm install specifically on a dependent package), how can I use a package that requires a build step when installing from a Git repo?
You can try this: https://www.npmjs.com/package/npm-git-install
It requires nodegit, so you'll have to be able to install that as well on your system.

Git dependency with npm keeping .git files

I am using a private GIT repository as dependency in npm:
"name": "git+ssh://git#git.domain.com:user/repo.git"
This is working and clones the repository inside node_modules when I do npm install.
The matter is it deletes .git folder and .gitignore file. I want to keep those file (to do commits later) ¿How to keep those files?
It's better to use npm link ../path-to-local-git after you git clone your dependency repo.
git clone <repo>
cd PROJECT
npm link ../<repo>
and you see the build process run.
It sounds like you would be better served keeping a local checkout of the project and specifying the dependency with a local path.
cd ..
git clone ssh://git#git.domain.com:user/repo.git
cd repo; npm install
cd ../PROJECT
npm i --save ../repo
That way you can make changes and commit them back.
npm treats the contents of node_modules as private, so you should not expect to be able to get into the node_modules directory and do anything useful. If you want to maintain a git checkout of a project which is a dependency, then do that, but don't combine it with the dependency-management that npm does.
Also check out npm link if the dependency is itself a npm-compatible package. https://docs.npmjs.com/cli/install