我想这样做,所以npm install也会安装这个包。Json的../somelocallib或者更重要的是它的依赖项。

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

当前回答

这对我很有用。

将以下内容放入包中。json文件

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

其他回答

NPM >= 2.0.0

该特性在npm 2.0.0版本中实现。本地路径可以使用npm install -S或npm install——save保存,使用以下任何一种形式:

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

示例package.json:

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

npm ls:

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

NPM < 2.0.0

在包中放入somelocallib作为依赖项。正常的Json:

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

然后运行npm link ../somelocallib和NPM会将你正在使用的版本作为符号链接安装。

参考:链接(1)

实际上,从npm 2.0开始,现在已经支持本地路径了。

使用工作空间

使用该文件的缺点:../path/to/your-library是你必须安装NPM或使用NPM link,以使更改在导入你的包的包中生效。

如果你使用pnpm:一个更好的解决方案是使用workspace: protocol: workspace:../path/to/your-library。它会将目录符号链接到您的node_modules目录,而不是复制它,因此源上的任何更改都会立即生效。

例如:

  ...
  "dependencies": {
    ...
    "my-package": "workspace:../../dist"
  },

注意:此解决方案打算在工作空间中使用,因此可能需要创建pnpm-workspace。Yaml(甚至是一个空文件)文件在您的项目的根。

主项目

这是包裹。Json,你将用于主项目:

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

其中,./somelocallib是相对于主项目package.json的库文件夹的引用。

参考:https://docs.npmjs.com/cli/v7/configuring-npm/package-json # local-paths


子工程

处理你的库依赖项。

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

这是一个已知的NPM错误。

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


Docker注意事项

检查主包。锁和你的somelocallib/package。锁定到源代码管理器中。

然后在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)结构中使用括号,以使操作幂等。

我知道npm install ../ somelocallib作品。

然而,我不知道你在问题中显示的语法是否可以从package.json中工作…

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

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