npm 任务未在 Azure 管道中创建 node_modules 文件夹

npm task not creating node_modules folder in Azure pipeline

这不是节点项目,而是 MVC Web 应用程序。 Objective 是通过 Azure 管道中的 npm 步骤捆绑一个 Quill.js 库。

问题:node_modules 包含所需代码和依赖项的文件夹未在管道中生成。

package.json 的配置使得在只有 "npm install" 的新位置本地部署解决方案将重新创建 node_modules 文件夹,其中包含所有需要的文件和依赖项,以便一切正常工作.

但是,在通过 Azure Pipeline 任务复制此过程时遇到问题。 node_modules 没有创建包含所需内容的文件夹。已经做了一些实验,但这是对我来说最有意义的顺序:

使用 NuGet NuGet 还原
VsTest – 测试程序集
使用节点 8.x
npm install(任务设置为 运行 在 package.json 所在的同一项目文件夹中)
构建解决方案
其他几个任务…

package.json 看起来像这样...

{
  ...
     ,
  "dependencies": {
    "quill": "^1.3.7"
  }
}

但是 node_modules 没有像在本地那样创建。

感谢您的任何建议。

我有一个简单的 package.json 并且我在屏幕下方配置了我的 npm 任务。

{
  "name": "service--whoami-sample-app",
  "version": "1.0.0",
  "description": "Azure Functions sample for the Serverless framework",
  "scripts": {
    "test": "echo \"No tests yet...\"",
    "start": "func host start"
  },
  "keywords": [
    "azure",
    "serverless"
  ],
  "dependencies": { "quill": "^1.3.7"}
}

我 运行 针对我的自托管代理的管道。从屏幕截图中您可以看到已安装 quill。

找到解决方案。错误地识别了问题。事实证明,node_modules 文件夹实际上是由构建机器上的 npm 加载的,但构建解决方案并未选取要包含在工件中的文件夹或其内容。

在此博客上找到答案post:

https://blogs.perficient.com/2016/08/11/how-to-add-gulp-output-or-bowernpm-packages-to-webdeploy-package/

解决方案是手动编辑项目文件以添加自定义构建目标,将以下内容添加到包含 package.json.

的项目的 csproj 文件中
  <Target Name="AddNpmOutput">
    <ItemGroup>
      <_CustomFiles Include="node_modules\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>node_modules\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      AddNpmOutput;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      AddNpmOutput;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>