npm allows to replace existing packages with new packages (of same version). Internal npm Immutable packages. Packages are published only after unit tests and functional tests are passed. Only build systems can publish packages.