Javascript 将客户端和服务器package.json文件合并为一个

Javascript 将客户端和服务器package.json文件合并为一个,javascript,node.js,reactjs,package.json,Javascript,Node.js,Reactjs,Package.json,我有一个由服务器端代码(在nodejs中)和客户端代码(带有react)组成的项目。我有单独的package.json文件,但是我被要求将它们合并成一个。服务器文件位于项目根目录中,客户端与其他客户端代码位于/client文件夹中。你能帮我做那件事吗?我可以修改一下将客户端文件复制到服务器客户端吗?我在上面找不到任何有用的东西 package.json: { "name": "curr-calc", "version": "1.0.0", "description": "curren

我有一个由服务器端代码(在nodejs中)和客户端代码(带有react)组成的项目。我有单独的package.json文件,但是我被要求将它们合并成一个。服务器文件位于项目根目录中,客户端与其他客户端代码位于/client文件夹中。你能帮我做那件事吗?我可以修改一下将客户端文件复制到服务器客户端吗?我在上面找不到任何有用的东西

package.json:

{
  "name": "curr-calc",
  "version": "1.0.0",
  "description": "currency calc using node.js and react.js",
  "main": "index.js",
  "repository": "",
  "author": "",
  "license": "MIT",
  "scripts": {
    "client": "cd client && yarn start",
    "server": "nodemon server.js",
    "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"",
    "lint": "eslint .",
    "babel": "babel --presets es2015 js/server.js -o build/main.bundle.js",
    "test": "yarn --cwd client run test",
    "heroku-postbuild": "cd client && yarn --production=false && yarn run build"
  },
  "dependencies": {
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "express-session": "^1.15.6",
    "node-fetch": "^2.1.2",
    "open": "0.0.5",
    "path": "^0.12.7",
    "prop-types": "^15.6.1",
    "react-widgets": "^4.2.6",
    "redis": "^2.8.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.0.3",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "concurrently": "^3.5.0",
    "eslint": "^4.19.1",
    "eslint-config-standard": "^10.2.1",
    "eslint-config-standard-react": "^5.0.0",
    "eslint-plugin-import": "^2.6.0",
    "eslint-plugin-jest": "^21.3.2",
    "eslint-plugin-node": "^5.1.0",
    "eslint-plugin-promise": "^3.5.0",
    "eslint-plugin-react": "^7.5.1",
    "eslint-plugin-standard": "^3.0.1",
    "fetch-mock": "^6.3.0",
    "node-fetch": "^2.1.2",
    "nodemon": "^1.17.2",
    "react-test-renderer": "^16.3.0",
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1"
  }
}
{
  "name": "curr-calc",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-scripts": "1.1.1"
  },
  "devDependencies": {
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1",
    "fetch-mock": "^6.3.0",
    "react-test-renderer": "^16.3.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:5000/"
}
client/package.json:

{
  "name": "curr-calc",
  "version": "1.0.0",
  "description": "currency calc using node.js and react.js",
  "main": "index.js",
  "repository": "",
  "author": "",
  "license": "MIT",
  "scripts": {
    "client": "cd client && yarn start",
    "server": "nodemon server.js",
    "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"",
    "lint": "eslint .",
    "babel": "babel --presets es2015 js/server.js -o build/main.bundle.js",
    "test": "yarn --cwd client run test",
    "heroku-postbuild": "cd client && yarn --production=false && yarn run build"
  },
  "dependencies": {
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "express-session": "^1.15.6",
    "node-fetch": "^2.1.2",
    "open": "0.0.5",
    "path": "^0.12.7",
    "prop-types": "^15.6.1",
    "react-widgets": "^4.2.6",
    "redis": "^2.8.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.0.3",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "concurrently": "^3.5.0",
    "eslint": "^4.19.1",
    "eslint-config-standard": "^10.2.1",
    "eslint-config-standard-react": "^5.0.0",
    "eslint-plugin-import": "^2.6.0",
    "eslint-plugin-jest": "^21.3.2",
    "eslint-plugin-node": "^5.1.0",
    "eslint-plugin-promise": "^3.5.0",
    "eslint-plugin-react": "^7.5.1",
    "eslint-plugin-standard": "^3.0.1",
    "fetch-mock": "^6.3.0",
    "node-fetch": "^2.1.2",
    "nodemon": "^1.17.2",
    "react-test-renderer": "^16.3.0",
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1"
  }
}
{
  "name": "curr-calc",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-scripts": "1.1.1"
  },
  "devDependencies": {
    "enzyme": "^3.3.0",
    "enzyme-adapter-react-16": "^1.1.1",
    "fetch-mock": "^6.3.0",
    "react-test-renderer": "^16.3.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:5000/"
}
编辑:

我尝试手动合并此文件: 1) 我复制了所有依赖项 2) 我复制了srcipt并重命名了那些复制的,并在每个客户端脚本的开头添加了“cd client&&” 3) 我从clien文件夹中删除了package.json、node_模块和所有纱线文件

现在,当我尝试通过Thread dev运行应用程序时,我收到:

监听端口5000[1]module.js:549[1]抛出错误;[1] ^ [1] [1]错误:找不到模块 “/home/zaba/code/currCalc_react/curr-calc/client/package.json”[1]
在Function.Module._resolveFilename(Module.js:547:15)[1]处 Function.Module._在Module.require处加载(Module.js:474:25)[1] (module.js:596:17)[1]根据需要(内部/module.js:11:18)[1]
在getPublicUrl (/home/zaba/code/currCalc_react/curr calc/node_modules/react scripts/config/path.js:34:19) [1] 反对。 (/home/zaba/code/currCalc_react/curr calc/node_modules/react scripts/config/path.js:61:14) [1] 在模块处编译(Module.js:652:30)[1] Object.Module._extensions..js(Module.js:663:10)[1]位于 tryModuleLoad处的Module.load(Module.js:565:32)[1] (module.js:505:12)错误发生意外错误:“命令 失败。[1]退出代码:1[1]命令:sh[1]参数:-c cd客户端 &&反应脚本开始[1]目录: /home/zaba/code/currCalc_react/currCalc[1]输出:[1]”。信息如果 你认为这是一个错误,请打开一个错误报告的信息 在“/home/zaba/code/currCalc\u react/curr calc/warn error.log”中提供。 信息访问,获取有关 这个命令。错误发生意外错误:“命令失败。[1] 退出代码:1[1]命令:sh[1]参数:-c纱线开始[1] 目录:/home/zaba/code/currCalc\u react/curr calc[1]输出:[1]”。 信息如果你认为这是一个错误,请用 中提供的信息 “/home/zaba/code/currCalc\u react/curr calc/warn error.log”。信息访问 获取有关此的文档 指挥部。[1] 客户端已退出,代码为1 -->正在向其他进程发送SIGTERM。。[0]纱线服务器已退出,代码为null错误发生意外错误:“命令失败。退出。” 代码:1命令:sh参数:-c并发-失败时杀死其他 \“纱线服务器\”“纱线客户端\”目录: /home/zaba/code/currCalc\U react/currCalc Output:“。如果你认为 这是一个bug,请打开带有所提供信息的bug报告 在“/home/zaba/code/currCalc\u react/curr calc/warn error.log”中


为什么它仍在寻找client/package.json文件?这可能是隐藏在某处的create react应用程序设置吗?

我不会将它们合并为一个。它们是两个不同的应用程序,具有不同的依赖关系。尽管如此,我还是将名称命名为:
@curr-calc/client
@curr-calc/server


如果您真的想合并它们,我会手动完成,只需复制依赖项、devdependency和脚本即可。删除任何重复项(对于脚本,您需要重命名具有重复键的脚本)

我不会把它们合并成一个。它们是两个不同的应用程序,具有不同的依赖关系。尽管如此,我还是将名称命名为:
@curr-calc/client
@curr-calc/server


如果您真的想合并它们,我会手动完成,只需复制依赖项、devdependency和脚本即可。删除任何重复项(对于脚本,您需要重命名具有重复键的脚本)

根据您的目标,您有几种方法:

  • 手动将其与两个项目合并,然后您将拥有一个带有单个
    package.json
    文件的单个项目
  • 因为json只是一个普通的JS对象,所以您可以使用类似lodash的东西来实现这一点:

    const server = require("../path/to/server/package.json");
    
    const client = require("../path/to/client/package.json");
    
    const merge = require("lodash/fp/merge");
    
    let merged = merge(server, client);
    

  • 有关lodash fp和node的更多信息,请参见

    根据您的目标,这里有几种方法:

  • 手动将其与两个项目合并,然后您将拥有一个带有单个
    package.json
    文件的单个项目
  • 因为json只是一个普通的JS对象,所以您可以使用类似lodash的东西来实现这一点:

    const server = require("../path/to/server/package.json");
    
    const client = require("../path/to/client/package.json");
    
    const merge = require("lodash/fp/merge");
    
    let merged = merge(server, client);
    

  • 有关lodash fp和node的更多信息,请参见

    实际上,这不是我的选择。谢谢你的提示!我尝试手动合并它们,但不起作用。纱线抱怨脚本。在这种情况下,应用程序是使用create react应用程序生成的,这很重要吗?Thread到底在抱怨什么?您必须重命名具有相同密钥的脚本(例如“test”),我重命名了它们。但是,当尝试通过Thread dev运行应用程序时,它仍然会查找client/package.json。我从客户机文件夹中删除了package.json、所有纱线文件和节点模块。我用我所做的一切和控制台输出编辑我的问题。在脚本“客户端”中,您将目录更改为您的客户端文件夹。您必须调整脚本,以便调用正确的脚本。在这种情况下,您可以删除“客户机”脚本,并在“开发”脚本中直接从您的客户机调用重命名的开始脚本。谢谢你的提示!我尝试手动合并它们,但不起作用。纱线抱怨脚本。在这种情况下,应用程序是使用create react应用程序生成的,这很重要吗?Thread到底在抱怨什么?您必须重命名具有相同密钥的脚本(例如“test”),我重命名了它们。但是,当尝试运行应用程序时,它看起来