package.json中的本地依赖项

node.js Node.js

乐米亚

2020-03-17

我想要做这样的事情,所以npm install也安装package.json../somelocallib或更重要的是它的依赖。

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

第1917篇《package.json中的本地依赖项》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

10个回答
神无A 2020.03.17

实际上,从npm 2.0开始,现在支持本地路径(请参阅此处)。

小小JinJin蛋蛋 2020.03.17

很好.....至少在Windows上(我的npm是3.something),我需要这样做:

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

当我这样做时,npm install ../module1 --save它导致绝对路径,而不是文档中的相对路径。

我弄乱了一点,确定../xxx足够了。

具体来说,我已签出本地节点模块以说d:\ build \ module1,d:\ build \ module2和d:\ build \ nodeApp中的节点项目(应用程序)。

要“安装”,我:

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的package.json的依赖项为“ module2”:“ ../module2”; module2没有本地依赖关系;nodeApp具有依赖项“ module1”:“ ../ module1”和“ module2”:“ ../ module2”。

不确定这是否仅对我有用,因为所有3个文件夹(module1,module2和nodeApp)都位于同一级别上。

神奇Tony古一 2020.03.17

这对我有用:首先,确保npm目录具有正确的用户

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

然后您在package.json中链接目录

"scripts": {
 "preinstall": "npm ln mylib ../../path/to/mylib"
}, 
"dependencies": {
  "mylib" : "*"
}
阿飞达蒙樱 2020.03.17
番长LA 2020.03.17

我知道那npm install ../somelocallib可行。

但是,我不知道您在问题中显示的语法是否适用于package.json...

不幸的是,文档似乎只提到URL作为依赖项。

尝试file:///.../...tar.gz,指向一个压缩的本地库...,然后告诉我们它是否有效。

Harry小小 2020.03.17

硕士项目

这是您将用于主项目的package.json:

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

那里./somelocallib相对于主项目package.json的库文件夹的引用

参考:https : //docs.npmjs.com/files/package.json#local-paths


子项目

处理您的库依赖项。

除了运行外npm install,您还需要运行(cd node_modules/somelocallib && npm install)

这是NPM的已知错误。

参考:https//github.com/npm/npm/issues/1341(寻求更新的参考)


Docker注释

签入您的母版,package.lock然后签somelocallib/package.lock入源代码管理器。

然后在您的Dockerfile中使用:

FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...

我在(cd A && B)结构中使用括号使运算幂等。

阿飞米亚 2020.03.17

这对我有用。

将以下内容放入您的package.json文件中

"scripts": {
    "preinstall": "npm install ../my-own-module/"
}
小宇宙阳光 2020.03.17

现在可以package.json直接在您的本地指定本地Node模块的安装路径从文档:

本地路径

从2.0.0版开始,您可以提供包含软件包的本地目录的路径。可以使用npm install -Snpm install --save使用以下任意形式保存本地路径

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

在这种情况下,它们将被标准化为相对路径并添加到您的中package.json例如:

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

此功能对于本地脱机开发和创建需要npm安装的测试很有用,您不想在不打外部服务器的地方安装npm,但是在将程序包发布到公共注册表时不应使用。

米亚猪猪 2020.03.17

如果您想进一步实现自动化,因为您正在将模块检入版本控制中,并且不想依赖记住npm链接的开发人员,则可以将其添加到package.json的“脚本”部分:

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

这感觉不算是骇人听闻的,但似乎“可行”。从此npm问题获得了提示:https : //github.com/npm/npm/issues/1558#issuecomment-12444454

小宇宙神无 2020.03.17

这是添加本地依赖项的方法:

npm install file:src/assets/js/FILE_NAME

从NPM将其添加到package.json:

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

像这样直接添加到package.json中:

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android