避免webpack命令在子模块上运行

时间:2018-10-01 03:14:40

标签: node.js npm webpack

我在这里有问题。我有一个Webpack项目X,其中有另一个Webpack项目Y作为依赖项。虽然Project X是最终的应用程序项目,但是Project Y是Webpack库项目类型,而Project Y的输出是.js文件,.css文件和一堆图像。结构或多或少是这样的:

Project_X/
└─ node_modules/
└─ dist/
└─ src/
   └─ css/   
   └─ img/
   └─ js/
   └─ index.ejs
└─ lib/
   └─ Project_Y <— This is an inner webpack project added as a git submodule
      └─ node_modules/
      └─ dist/
      └─ src/
      └─ package-lock.json
      └─ package.json
      └─ webpack.config.js
└─ package-lock.json
└─ package.json
└─ webpack.config.js

Project_X/ └─ node_modules/ └─ dist/ └─ src/ └─ css/ └─ img/ └─ js/ └─ index.ejs └─ lib/ └─ Project_Y <— This is an inner webpack project added as a git submodule └─ node_modules/ └─ dist/ └─ src/ └─ package-lock.json └─ package.json └─ webpack.config.js └─ package-lock.json └─ package.json └─ webpack.config.js

项目X和Y都有自己的npm脚本来构建自己的输出文件。这个想法是在Project X上运行,因此Project X中的所有src文件都将在Project X的npm run build文件夹中进行处理和输出。之后,将用于构建Project Y,并将其.js .css和图像文件移动到Project X的dist文件夹中。

我完成这项工作的主要方法是在Project X(dist)上运行build命令,直到在Project X的dist文件夹中生成了所有输出文件,然后使用Webpack Shell插件( webpack插件,允许您在webpack生成之前或之后运行任何Shell命令),运行Project Y的build命令(npm run build),完成后将其所有生成的文件(.js,.css和图像文件)移动到Project X的npm run build文件夹。

问题在于在Project X上运行npm run build,它启动了Project X的生成过程(这很好),但它还会在Project Y目录上自动运行相同的命令,但要使用Project X的依赖项,因此由于在项目X目录中搜索了项目Y所需的所有加载程序和依赖项,而不是在存在它们的项目Y目录中进行搜索,因此会引发错误。

起初,我认为问题出在npm命令,但经过一些测试,我意识到问题出在webpack命令(我的dist脚本触发了webpack命令)。

如何避免在Project X根级别执行的npm run build命令也对Project Y运行?

0 个答案:

没有答案