我们有一个主项目,它加载子项目,然后用npm将它们捆绑到一个文件中。这是package.json:
{
"name": "my-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"angular": "^1.5.7"
},
"devDependencies": {
"project-a": "git+ssh://git@bitbucket.org/project-a.git",
"project-b": "git+ssh://git@bitbucket.org/project-b.git"
},
"author": "",
"license": "ISC"
}
我们想在多个服务器上构建项目,例如掌握和发展,这些是分支机构的名称。现在,如果我们构建开发分支,那么npm应该来自git+ssh://git@bitbucket.org/project-a.git#develop
和git+ssh://git@bitbucket.org/project-b.git#develop
。但我无法找到一种方法告诉npm拉那些分支而不是主人。
感谢任何帮助。
答案 0 :(得分:1)
首先,npm会拉出你告诉它的分支。格式是这样的:
"devDependencies": {
"project-a": "git+ssh://git@bitbucket.org/project-a.git#branchName"
}
如果没有定义分支,则默认为master。
因此,这给出了一个起点,您需要在运行时通过将分支的名称附加到url来修改依赖项。关于在运行npm install之前将其归档的可能性,您可以通过将关键字(例如#branchName)更改为您想要的工具来处理package.json。使用像sed这样的工具很容易存档
然而,这会让你的git repo"脏" (如未修改的变化)。另一种方法是编写一个cli工具,它将读取你的package.json,提取依赖项并通过调用npm install $ reporul并使用你想要的分支后缀url repo来手动安装它们。也许这个repo提供了一个工具,你可以如果您不想自己写一篇文章,请使用:https://github.com/CrowdArchitects/node-rebranch-dependencies