我在几个项目中一次又一次使用少量库,我想在项目中强制执行特定版本。
项目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
)?
答案 0 :(得分:4)
您可以托管一个自己的npm包,它将这些包作为依赖项。您可以设置一个可以托管您的软件包的自己的nexus服务器,也可以将它放在npmjs上。
将此行添加到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
。
有关更多信息,请参阅有关发布包的文档:https://docs.npmjs.com/cli/publish
答案 1 :(得分:1)
如果你想在一个包中包含这些包,你需要以某种方式在这个包中公开这些库:
import { React, BrowserHistory, ReactDOM } from 'all-libs';
但我想如果真的有意义的话。请注意,所有成熟的库(例如create-react-app
和nextjs
)都要求您自己安装特定版本。