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

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

当前回答

如果你想进一步自动化这个,因为你正在将你的模块检入版本控制,并且不想依赖于开发人员记住npm link,你可以将这个添加到你的包中。Json“脚本”部分:

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

这感觉很俗气,但似乎很“管用”。从这个npm问题中得到了提示: https://github.com/npm/npm/issues/1558#issuecomment-12444454

其他回答

我想使用一组用TypeScript编写的本地依赖,这里的答案都不适合我。NPM安装会直接拒绝构建依赖项。

我不得不使用tsconfig。Json将包添加到我的项目中,而不将它们标记为依赖项。我的用例更加复杂,因为有些依赖项是相互依赖的,我希望所有依赖项都来自本地文件夹。

以下是我的解决方案:

// tsconfig.json
{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@tiptap/*": [
        "tiptap/packages/*/src"
      ]
    }
  }
}

在上面的例子中,我有一个名为tiptap/的本地项目子文件夹,在tiptap/packages/*中有许多包。“路径”选项将重写所有@tiptap/foo导入到。/tiptap/packages/foo/src,包括我自己的文件和tiptap/中的文件。

这不是一个很好的解决方案,但这是唯一对我有效的方法。

用纱线可以这样做

纱线添加文件:../somelocallib

主项目

这是包裹。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)结构中使用括号,以使操作幂等。

完整的本地开发有两个步骤:

提供包含包的本地目录的路径。

{ “名称”:“记者”, “依赖”:{ “酒吧”:“文件:. . / foo / bar” } }

符号链接包文件夹 CD ~/projects/node-redis #进入包目录 NPM link #创建全局链接 CD ~/projects/node-bloggy #进入其他包目录。 NPM link redis # link-install包

这是如何添加本地依赖项的:

npm安装文件:src/assets/js/FILE_NAME

把它添加到包中。json来自NPM:

保存文件:src/assets/js/FILE_NAME

直接添加到包。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"
....