有没有办法创建一个元数据包,package.json
:
a)包含一个依赖项列表,这些依赖项不用于构建它 包;
b)强制NPM安装这些deps,当这时 meta-package被添加到项目中,用于开发的生产?
问题是我的样板中有几十个包(prod和dev),我从一个项目复制到另一个项目。我想有一个私有包,曾经添加到项目package.json
告诉npm其他prod和dev deps安装。我想改进使用样板的过程,因为当我改变它的时候,我(实际上是我的意愿,而不是执行)在这个样板的基础上构建的所有项目中进行这些更改,还在开发中。
我设法将我经常使用的所有代码添加到我的元数据包production
的{{1}}部分。但是这种方法存在两个问题:
1。构建元数据包时会安装很多不必要的软件包(我必须构建它,因为它包含ES6 / 7中的一些帮助程序);
2. 我仍然需要将生产代码列表复制/粘贴到每个新项目中,以提供NPM信息,在生产服务器上安装什么。
非欢迎非npm解决方案。
答案 0 :(得分:3)
嗯,这似乎很容易做到:
1。首先,需要将样板中使用的所有软件包分成两组 - 运行应用程序所需的组(production
),并且需要构建和debug(development
)。
2。创建production
元数据包(meta-prod
)。 package.json内容:
...
"dependencies": {
< Here we have the list of production dependencies. >
},
...
如有必要,编译它并推送到git(即github)。
3。创建development
元数据包(meta-dev
)。 package.json内容:
...
"dependencies": {
< Here we have the list of development dependencies. >
< Please note, that this is in the 'dependencies' section, >
< not the 'devDependencies'. >
},
...
将它推到git。
4. 从样板package.json
中删除所有依赖项,并将其替换为:
...
"dependencies": {
"meta-prod": "git+https://github.com/your_account/meta-prod"
},
"devDependencies": {
"meta-dev": "git+https://github.com/your_account/meta-dev"
},
...
就是这样!执行npm install
时将安装依赖关系,npm
将正确考虑依赖关系作为生产和开发。现在,您可以使用更小的package.json
样板,并从单点更新您的开发人员列表。
唯一的缺点是当您使用来自npm
的包时,git
无法捕获版本更改,因此要更新应用程序中的包,您必须从{{1}删除元数据包目录}并重新运行node_modules
。要解决此问题,您可以将您的软件包发布到npmjs.com(如果您是付费的npm客户,最好将其发布为私有软件包),并在每次更新时更改元软件包版本。
以下是样板和元包示例: