我在我的asp.net Core MVC中使用webpack来捆绑js / css文件并将其放入wwwroot文件夹中。
我的文件夹结构在屏幕上显示:
我在FrontEnd.csproj中添加了“after-build”部分:
<Target Name="BuildClientAssets" BeforeTargets="Build">
<Exec Command="npm install"/>
<Exec Command="npm run build"/>
</Target>
它按预期工作。但如果我有机会在发布网络项目上执行此命令,那就太棒了。
但是当我尝试将preublish部分添加到Web项目并开始发布
时<Target Name="BuildClientAssets" BeforeTargets="Publish">
<Exec Command="npm install"/>
<Exec Command="npm run build"/>
</Target>
我收到此错误:命令“npm run build”退出,代码为-4058
我认为,这是因为package.json位于FrontEnd项目中(不在Web项目中),所以我找了一个合适的脚本以正确的方式启动命令并覆盖了该部分:
<Target Name="BuildClientAssets" BeforeTargets="Publish">
<Exec Command="npm install" />
<Exec Command="webpack --config ../Condenast.FrontEnd/webpack.config.js" />
</Target>
但是在我收到错误之后:
无法解决'D:\ RubiusProjects \ Git \ condenast-core-vue \ LMPro.Web'中的'./rc/components/app/report/report.ts'。条目中的LMPro.Web错误模块未找到0
错误无法解析'D:\ RubiusProjects \ Git \ condenast-core-vue \ LMPro.Web'中的'。/rc/components/app/login/login.ts''LMPro.Web ERROR in找不到输入模块0
错误无法解析'D:\ RubiusProjec ts \ Git \ condenast-core-vue \ LMPro.Web'中的'source-map-loader':找不到LMPro.Web模块0
该命令已启动,但仍会在Web中搜索模块,而不是FrontEnd项目。
有什么想法吗?
答案 0 :(得分:1)
npm install
也没有找到正确的文件夹,您需要在正确的位置运行这些命令-可能已在您的计算机上运行,因为它已经具有节点模块。您可以保留两个命令(ǹpm install
/ npm run build
)并尝试定位正确的位置。你该怎么做?您可以通知命令他将运行的文件夹。
首先,在PropertyGroup
部分中设置前端文件夹位置
<FrontRoot>../Condenast.FrontEnd/</FrontRoot>
,然后使用WorkingDirectory
属性在命令行中传递该属性。看起来像这样:
<Target Name="BuildClientAssets" BeforeTargets="Publish">
<Exec WorkingDirectory="$(FrontRoot)" Command="npm install"/>
<Exec WorkingDirectory="$(FrontRoot)" Command="npm run build"/>
</Target>
类似的情况here