Local dependency in package.json

匿名 (未验证) 提交于 2019-12-03 02:11:02

问题:

I want to do something like this, so npm install also installs the package.json of ../somelocallib or more importantly its dependencies.

"dependencies": {     "express": "*",     "../somelocallib": "*" }

回答1:

2014-Sep update

This feature was implemented in the version 2.0.0 of npm. Example:

{   "name": "baz",   "dependencies": {     "bar": "file:../foo/bar"   } }

Any of the following paths are also valid:

../foo/bar ~/foo/bar ./foo/bar /foo/bar

The local package will be copied to the prefix (./node-modules).


Old answer

Put somelocallib as dependency in your package.json as normal:

"dependencies": {   "somelocallib": "0.0.x" }

Then run npm link ../somelocallib and npm will install the version you're working on as a symlink.

app@0.0.1 /private/tmp/app └―― somelocallib@0.0.1 -> /private/tmp/somelocallib

Reference: link(1)



回答2:

It is now possible to specify local Node module installation paths in your package.json directly. From the docs:

Local Paths

As of version 2.0.0 you can provide a path to a local directory that contains a package. Local paths can be saved using npm install -S or npm install --save, using any of these forms:

../foo/bar ~/foo/bar ./foo/bar /foo/bar

in which case they will be normalized to a relative path and added to your package.json. For example:

{   "name": "baz",   "dependencies": {     "bar": "file:../foo/bar"   } }

This feature is helpful for local offline development and creating tests that require npm installing where you don't want to hit an external server, but should not be used when publishing packages to the public registry.



回答3:

This works for me.

Place the following in your package.json file

"scripts": {     "preinstall": "npm install ../my-own-module/" }


回答4:

If you want to further automate this, because you are checking your module into version control, and don't want to rely upon devs remembering to npm link, you can add this to your package.json "scripts" section:

"scripts": {     "postinstall": "npm link ../somelocallib",     "postupdate": "npm link ../somelocallib"   }

This feels beyond hacky, but it seems to "work". Got the tip from this npm issue: https://github.com/isaacs/npm/issues/1558#issuecomment-12444454



回答5:

This is how you will add local dependencies:

npm install file:src/assets/js/FILE_NAME

Add it to package.json from NPM:

npm install --save file:src/assets/js/FILE_NAME

Directly add to package.json like this:

....   "angular2-autosize": "1.0.1",   "angular2-text-mask": "8.0.2",    "animate.css": "3.5.2",   "LIBRARY_NAME": "file:src/assets/js/FILE_NAME" ....


回答6:

Actually, as of npm 2.0, there is support now local paths (see here).



回答7:

I know that npm install ../somelocallib works.

However, I don't know whether or not the syntax you show in the question will work from package.json...

Unfortunately, doc seems to only mention URL as a dependency.

Try file:///.../...tar.gz, pointing to a zipped local lib... and tell us if it works.



回答8:

This worked for me: first, make sure the npm directories have the right user

sudo chown -R myuser ~/.npm sudo chown -R myuser /usr/local/lib/node_modules

Then your in your package.json link the directory

"scripts": {  "preinstall": "npm ln mylib ../../path/to/mylib" },  "dependencies": {   "mylib" : "*" }


回答9:

Curious.....at least on Windows (my npm is 3.something) I needed to do:

"dependencies": {  "body-parser": "^1.17.1",  "module1": "../module1",  "module2": "../module2",

When I did an npm install ../module1 --save it resulted in absolute paths and not relative per the documentation.

I messed around a little more and determined that ../xxx was sufficient.

Specifically, I have the local node modules checked out to say d:\build\module1, d:\build\module2 and my node project (application) in d:\build\nodeApp.

To 'install', I:

d:\build\module1> rmdir "./node_modules" /q /s && npm install d:\build\module2> rmdir "./node_modules" /q /s && npm install d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install

module1's package.json has a dependency of "module2": "../module2"; module2 has no local dependency; nodeApp has dependencies "module1": "../module1" and "module2": "../module2".

Not sure if this only works for me since all 3 folders (module1, module2 and nodeApp) sit on that same level.......



回答10:

Two steps for a complete local development:

  1. Provide the path to the local directory that contains the package.
  2. Symlink the package folder


转载请标明出处:Local dependency in package.json
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!