I'm working on a project that requires using the npm pack
command. Is running build on the library/package required before creating the installable tar file? Or can I just pack and then install it into the app?
How does npm run build work with npm pack?
15.9k views Asked by Alex Nelson At
1
Yes, but for totally different reasons.
npm run build
can do anything: it just executes the value forbuild
inside thescripts
object in yourpackage.json
, for example on an Angular project it'll look like this,npm pack
basically "create a tarball from a package", but here is the deal: the "package" that it creates a tarball from has to exist. So, in order to create the "package" thatnpm pack
targets in./dist
you frequently have to runnpm build
. This is because many JavaScript projects are written in TypeScript (in which case "build" usually runsnpx tsc
) or use a build system that will transpile their code to produce JavaScript (like babel). If your project is very rudimentary, there is a good chance you won't have to "build anything": you can see this if you create an empty directory and runnpm init
, but seldom are useful packages created this way.The result of
npm pack
is a.tgz
file. This is basically a compressed copy of a target directory. You can install this withnpm i ./file.tgz
. On the consuming machine that you wish to install the package on, you do not have to build anything. Building is what you do as a developer and a package maintainer. For example, you build TypeScript producing JavaScript. The consumer just downloads the result and installs the dependencies. It doesn't even have to know that you write your code with TypeScript (or better, Rust.)