我在这里有问题。我有一个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运行?