2017-08-02 27 views
0

我有一个在Azure中托管的Web应用程序。从Azure Web应用程序(MVC 4)中的节点包导入JavaScript文件

它被配置为从GitHub存储库自动构建和部署。

我使用的是我从nuget软件包中安装的angular.min.js版本,然后直接签入。现在我想改变它,并且从npm而不是nuget合并JavaScript包。

我做了以下内容:

  • 增加了一个NPM配置文件
  • 添加依赖 “角”: “^ 1.6.5”

以下是完整package.json文件:

{ 
    "version": "1.0.0", 
    "name: "asp.net", 
    "private": true, 
    "dependencies": { 
     "angular": "^1.6.5" 
    }, 
    "devDependencies": {} 
} 

然后,在我的剃须刀页面中,我直接从node_modules文件夹:

<script type="text/javascript" src="~/node_modules/angular/angular.min.js"></script> 

这在我的本地机器上工作。 我把这个检查到Github中,Azure框架构建并部署了我的代码。但是,文件夹node_modules不存在下D:\home\site\wwwroot

我试着加了预生成步骤:

npm install 

但这并没有解决问题。

使用kudu,我购买了Web服务器上的调试控制台。我将位置设置为文件夹D:\home\site\wwwroot,然后键入npm install。这工作:它创建并填充了node_modules文件夹,我的网站现在可以访问角度文件。

因此,构建不会恢复软件包,或者正在恢复软件包,但不会将其部署到wwwroot文件夹。

有没有一种正确的方法可以将节点包中的JavaScript文件包含在Azure上的ASP.NET MVC应用程序中?

回答

1

我按照this page上的说明添加了部署后步骤。

  • 在浏览器中,转到https://<mywebappname>.scm.azurewebsites.net
  • 启动调试控制台\ PowerShell选项卡
  • 钻取到文件夹 “d:\家\网站\部署\工具”
  • 创建一个文件夹“PostDeploymentActions “
  • 在此文件夹中,添加一个PowerShell脚本post-deploy.ps1

这个PowerShell脚本的内容:

pushd d:\home\site\wwwroot 
npm install 
popd 

现在,节点包在每次部署时都安装在Web服务器上。


在这个阶段,我不知道这是否是最好的长期解决方案或不....

0

最佳做法是使用GitHub的连续部署时,我们建议使用自定义用于自定义部署过程的部署脚本。详情请查询this doc

相关问题