【问题标题】:npm task not creating node_modules folder in Azure pipelinenpm 任务未在 Azure 管道中创建 node_modules 文件夹
【发布时间】:2020-05-09 03:35:49
【问题描述】:

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

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

package.json 的配置使得将解决方案部署到本地的新位置,仅使用“npm install”将重新创建 node_modules 文件夹,其中包含所有需要的文件和依赖项,以便一切正常运行。

但是,通过 Azure Pipeline 任务复制此过程时遇到问题。未创建包含所需好东西的 node_modules 文件夹。已经进行了一些实验,但以下是对我来说最有意义的顺序:

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

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

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

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

感谢您的任何建议。

【问题讨论】:

  • 我无法重现这种情况。您可以添加另一个 npm 任务,然后选择 Custom 命令。 " 然后在命令和参数中输入npm install quill,专门安装quill。
  • 感谢您尝试复制,@Levi Lu-MSFT。鼓励您通过构建管道任务获取 node_modules 文件夹。是的,我尝试在“npm install”任务之后在 npm 任务中显式调用“npm install quill”,但这没有帮助(我希望“npm install”就足够了,因为 package.json 指定了 quill)。我想更好地了解我的配置和你的配置之间的差异。
  • 我在下面发布了我的配置。你能发布你的 npm 任务的配置吗?
  • 感谢@LeviLu-MSFT 提供的信息。我的 npm 任务配置与您的相同,“包含 package.json 的工作文件夹”值设置为包含 package、json 的文件夹以及 node_modules 文件夹 应该 的创建位置。 package.json 与您的基本相同。试图确定可能有什么不同。

标签: azure npm azure-pipelines node-modules quill


【解决方案1】:

我有一个简单的 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"}
}

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

【讨论】:

    【解决方案2】:

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

    在这篇博文中找到答案:

    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>
    

    【讨论】:

    • 很高兴你解决了这个问题。您可以在上面标记答案。
    猜你喜欢
    • 2016-10-29
    • 2019-01-13
    • 2022-12-19
    • 2022-01-15
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多