Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将库包合并到单节点包中_Javascript_Reactjs_Npm - Fatal编程技术网

Javascript 将库包合并到单节点包中

Javascript 将库包合并到单节点包中,javascript,reactjs,npm,Javascript,Reactjs,Npm,我在几个项目中一次又一次地使用很少的库,我想在项目中强制使用特定的版本 项目1 { "name": "project_1", "version": "0.1.0", "dependencies": { "react": "^16.3.2", "react-dom": "^16.3.2", "react-router": "^4.2.0", "react-router-dom": "^4.2.2" } } 项目2 { "name": "proj

我在几个项目中一次又一次地使用很少的库,我想在项目中强制使用特定的版本

项目1

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2"
  }
}
项目2

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2"
  }
}
对于任何项目,我都希望将上面的所有包
react
react dom
react router
react route dom
放入一个单节点包(
all libs
)中,如下所示。通过这种方式,我可以冻结所有项目中的版本

任何项目

{
  "name": "project_1",
  "version": "0.1.0",
  "dependencies": {
    "all-libs": "0.0.1"
  }
}
采取这种做法的原因:

  • 集中式版本升级可避免版本兼容性问题

  • 我这里的问题是如何创建这个包(
    all libs

    您可以托管自己的npm包,该包将这些包作为依赖项。你可以设置一个自己的nexus服务器来承载你的包,或者你可以把它放在NPMJ上

    将以下行添加到package.json:

    "name": "all-libs",
    "version": "0.0.1",
    "description": "My Libs for every project",
    "author": "Me",
    "license": "MIT",
    "engines": {
        "node": ">=8.9.3"
    },
    "publishConfig": {
        "registry": "http://myRegistry.com"
    },
    "devDependencies": {},
    "dependencies": {
        "react": "^16.3.2",
        "react-dom": "^16.3.2",
        "react-router": "^4.2.0",
        "react-router-dom": "^4.2.2"
    }
    
    然后您可以通过NPM发布它,如下所示:
    NPM publish


    有关更多信息,请参阅有关发布包的文档:

    如果要将这些包放在一个包中,则需要以某种方式在此包中公开这些库:

    import { React, BrowserHistory, ReactDOM } from 'all-libs';
    

    但我想如果这真的有意义的话。请注意,所有成熟的库,如
    createreact-app
    nextjs
    都要求您自己安装特定的版本。

    您的回答很有趣。从来都不知道我们能做这样的事。我发布了一个你建议的包()。如何实际导入React并在项目中使用它?我尝试了从'core js libs'导入React,import{React}从'core js libs``导入{React}以及所有这样的组合`在
    npm I core js libs
    之后,您以与之前相同的方式导入它。react软件包是作为软件包中的依赖项安装的,可以作为项目中的正常依赖项使用。这是我以前尝试过的方法。谢谢你。被接受的方法要容易得多