Answers:
此功能已在npm的2.0.0版本中实现。例:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
以下任何路径均有效:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
把somelocallib
作为依赖于你的package.json
正常:
"dependencies": {
"somelocallib": "0.0.x"
}
然后运行npm link ../somelocallib
,npm将以符号链接的形式安装您正在使用的版本。
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
参考:link(1)
npm dedup
来解决此问题。npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
描述说在当前项目中将软件包安装为目录中的符号链接。
现在可以package.json
直接在您的本地指定本地Node模块的安装路径。从文档:
本地路径
从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安装的测试很有用,您不需要在不希望访问外部服务器的地方安装npm,但是在将程序包发布到公共注册表时不应使用。
"bar": "file:///home/user/src/foo/bar"
node:onbuild
映像仅复制当前目录,因此不包含任何内容../foo
。
npm install
在LAN上拥有另一个git存储库?当我尝试上述操作并从git + ssh进行npm安装时,即使我正在安装顶层软件包,它似乎也会在node_modules目录中查找,而不是尝试通过git + ssh进行安装。
这对我有用。
将以下内容放入您的package.json文件中
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
在module文件夹中删除,创建.npmignore
并在我第一次运行时将其递归地应用于除以外的所有文件夹777 node_modules
。但是,是的,它安装了依赖项。使用npm 1.4.14版本。
"dependencies": { "my-own-module": "file:../my-own-module" }
呢?
npm link
是您不需要npm install
每次都进行更新以使依赖项保持最新。
如果您想进一步使它自动化,因为您正在将模块检入版本控制中,并且不想依赖记住npm链接的开发人员,则可以将其添加到package.json的“脚本”部分:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
这感觉不算是骇人听闻的,但似乎“可行”。从此npm问题获得了提示:https : //github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
和postupdate
而不是preinstall
和preupdate
?
这是添加本地依赖项的方法:
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"
....
这是您将用于主项目的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(寻求更新的参考)
签入您的母版,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)
结构中使用括号使运算等幂。
这对我有用:首先,确保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" : "*"
}
npm install
。
很好.....至少在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)都位于同一级别上。
完成本地完整开发的两个步骤: