在同一存储库中的多个项目/文件夹/应用之间共享代码

时间:2019-01-14 11:58:19

标签: javascript node.js git

我有一个仓库,在多个文件夹中有多个项目或应用程序,每个文件夹都有自己的package.json文件和node_modules。所有这些项目都有一个具有相同代码的文件,并且在每个项目中都是多余的。我想将其取出并使其可共享。 一种方法是使用npm软件包。在这里考虑其他方式。请告诉我您有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果项目在相同的文件夹结构上运行,则可以简单地将文件移动到共享父文件夹中,然后从那里请求它。 如果您有DevOps周期,则可以在构建步骤中将该文件复制到每个文件夹中。 GitLab CI使它非常容易,但是可以在Git中完成而无需花费很多精力。 但是,如果代码库不是专有的,那么npm软件包似乎是最长期稳定且方便的解决方案。

答案 1 :(得分:0)

您可以为此单个文件创建一个外部模块(将来可能会在项目之间共享更多文件)

  • 为此单个文件初始化一个新项目

mkdir my-external-lib ; cd my-external-lib npm init

您将需要编辑package.json

{
    "name": "my-external-lib",
    "version": "0.1.0",
    "description": "Library function to all my project",
    "main": "index.js",
    "private": true,
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "repository": {
        "type": "git",
        "url": "<url-path-or-your-external-library>"
    },
    "keywords": [],
    "author": "<you>",
    "license": "ISC",
    "bugs": {},
    "homepage": "<url-path-or-your-external-library>#readme",
    "dependencies": {}
}

您不能原谅您在github上公开您的项目

此解决方案的问题在于,每次更新外部程序包时,您都需要rm -rf node_modules; npm i。我不知道为什么npm update不起作用。