我想要做这样的事情,所以npm install
也安装package.json
的../somelocallib
或更重要的是它的依赖.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Run Code Online (Sandbox Code Playgroud)
dan*_*eye 516
此功能是在npm的2.0.0版本中实现的.例:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Run Code Online (Sandbox Code Playgroud)
以下任何路径也有效:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Run Code Online (Sandbox Code Playgroud)
像往常一样把somelocallib
依赖放在你package.json
身上:
"dependencies": {
"somelocallib": "0.0.x"
}
Run Code Online (Sandbox Code Playgroud)
然后运行npm link ../somelocallib
,npm将安装你正在作为符号链接工作的版本.
app@0.0.1 /private/tmp/app
??? somelocallib@0.0.1 -> /private/tmp/somelocallib
Run Code Online (Sandbox Code Playgroud)
参考:link(1)
Mic*_*ouw 205
现在可以直接指定本地节点模块安装路径package.json
.来自文档:
本地路径
从版本2.0.0开始,您可以提供包含包的本地目录的路径.可以使用
npm install -S
或npm install --save
使用以下任何形式保存本地路径:Run Code Online (Sandbox Code Playgroud)../foo/bar ~/foo/bar ./foo/bar /foo/bar
在这种情况下,他们将被标准化为相对路径并添加到您的
package.json
.例如:Run Code Online (Sandbox Code Playgroud){ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
此功能有助于本地脱机开发和创建需要npm安装的测试,您不希望在其中访问外部服务器,但在将包发布到公共注册表时不应使用此功能.
Bri*_*ffe 85
这适合我.
将以下内容放在package.json文件中
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
Run Code Online (Sandbox Code Playgroud)
Tay*_*tay 29
如果你想进一步自动化这个,因为你正在检查你的模块进入版本控制,并且不想依赖开发人员记住npm链接,你可以将它添加到你的package.json"脚本"部分:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Run Code Online (Sandbox Code Playgroud)
这感觉超出了hacky,但它似乎"工作".从这个npm问题得到了提示:https: //github.com/isaacs/npm/issues/1558#issuecomment-12444454
小智 22
这是您添加本地依赖项的方法:
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"
....
Run Code Online (Sandbox Code Playgroud)
小智 12
2020 年,我在 Windows 10 上工作,尝试过
"dependencies": {
"some-local-lib": "file:../../folderY/some-local-lib"
...
}
Run Code Online (Sandbox Code Playgroud)
然后进行npm
安装。结果是在 中创建了该文件夹的快捷方式node-modules
。这是行不通的。你需要一个硬链接 - Windows 支持,但你必须在 Windows 中做一些额外的事情来创建硬符号链接。
由于我并不真正想要硬链接,因此我尝试使用网址代替:
"dependencies": {
"some-local-lib": "file:///D:\\folderX\\folderY\\some-local-lib.tar"
....
}
Run Code Online (Sandbox Code Playgroud)
这效果很好。
tar(您必须将库的 build / dist 文件夹中的内容打包)被提取到节点模块中的真实文件夹中,并且您可以像其他所有内容一样导入。
显然 tar 部分有点烦人,但由于“some-local-lib”是一个库(无论如何都必须构建),我更喜欢这个解决方案而不是创建硬链接或安装本地 npm。
完整本地开发的两个步骤:
Run Code Online (Sandbox Code Playgroud){ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Run Code Online (Sandbox Code Playgroud)cd ~/projects/node-redis # go into the package directory npm link # creates global link cd ~/projects/node-bloggy # go into some other package directory. npm link redis # link-install the package
这是您将用于主项目的package.json:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Run Code Online (Sandbox Code Playgroud)
那里./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(寻求最新参考)
签入您的母版,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)
# ...
Run Code Online (Sandbox Code Playgroud)
我在(cd A && B)
结构中使用括号使运算等幂。
使用 的缺点file:../path/to/your-library
是您必须npm install
或 使用npm link
才能使更改在导入您的包的包中生效。
如果您使用 pnpm:更好的解决方案是使用workspace:
协议:workspace:../path/to/your-library
。它会将目录符号链接到您的node_modules,而不是复制它,因此源中的任何更改都会立即生效。
例如:
...
"dependencies": {
...
"my-package": "workspace:../../dist"
},
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案旨在在工作区中使用,因此您可能需要pnpm-workspace.yaml
在项目的根目录中创建(即使是空的)文件。
设置相同,但workspace
关键字不可用:
...
"dependencies": {
...
"my-package": "../../dist"
}
Run Code Online (Sandbox Code Playgroud)
还要确保将“my-package”添加到 package.json 文件中的“workspaces”中。阅读更多