我想这样做,所以npm install也会安装这个包。Json的../somelocallib或者更重要的是它的依赖项。
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
我想这样做,所以npm install也会安装这个包。Json的../somelocallib或者更重要的是它的依赖项。
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
当前回答
实际上,从npm 2.0开始,现在已经支持本地路径了。
其他回答
完整的本地开发有两个步骤:
提供包含包的本地目录的路径。
{ “名称”:“记者”, “依赖”:{ “酒吧”:“文件:. . / foo / bar” } }
符号链接包文件夹 CD ~/projects/node-redis #进入包目录 NPM link #创建全局链接 CD ~/projects/node-bloggy #进入其他包目录。 NPM link redis # link-install包
用纱线可以这样做
纱线添加文件:../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)结构中使用括号,以使操作幂等。
实际上,从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(甚至是一个空文件)文件在您的项目的根。