将开发 NPM 依赖项加入到单个元包中

Ale*_*hev 5 javascript npm npm-install

有没有办法创建元包,其中package.json

a)包含依赖项列表,这些依赖项不用于构建此包;

b)当这个元包添加到项目中时,强制 NPM 安装这些 deps,无论是用于生产还是开发?

问题是我的样板中有几十个包(产品和开发),我将它们从一个项目复制到另一个项目。我想要一个私有包,一旦添加到项目中,package.json它就会告诉 npm 要安装哪些其他产品和开发部门。我想改进使用样板文件的过程,因为当我更改它的某些内容时,我(实际上这是我的意愿,而不是强制执行)在基于此样板文件构建的所有项目中进行这些更改仍在开发中。

我已成功将我通常使用的所有 deps 添加到production我的元包的package.json. 然而这种方法有两个问题:

1.当我构建元包时,安装了很多不必要的包(我必须构建它,因为它包含 ES6/7 中的一些帮助程序);

2.我仍然需要将生产部门列表复制/粘贴到每个新项目中,以提供 NPM 信息以及在生产服务器上安装的内容。

也欢迎非 npm 解决方案。

Ale*_*hev 6

嗯,这看起来很容易做到:

1.首先,需要将样板中使用的所有包分成两组 - 运行应用程序所需的 ( production) 和构建和调试所需的 ( development)。

2.创建production元包 ( meta-prod)。package.json内容:

...
"dependencies": {
    < Here we have the list of production dependencies.       >
},
...
Run Code Online (Sandbox Code Playgroud)

如果需要的话编译它并推送到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'.                               >
},
...
Run Code Online (Sandbox Code Playgroud)

将其推送到 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"
},
...
Run Code Online (Sandbox Code Playgroud)

就是这样!依赖项将在您安装时安装npm install,并将被npm生产和开发适当考虑。现在,您可以使用更小的package.json样板并从单点更新您的开发人员列表。

唯一的缺点是,npm当您使用 package from 时,它不会捕获版本更改git,因此要更新应用程序内的包,您必须从中删除元包目录node_modules并重新运行npm install。要解决此问题,您可以将包发布到 npmjs.com(如果您是付费 npm 客户,最好将其发布为私有包),并在每次更新时更改元包版本。

这是样板和元包示例: