首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github操作脚本必须先安装npm才能安装软件包,而其他脚本则不需要

Github操作脚本必须先安装npm才能安装软件包,而其他脚本则不需要
EN

Stack Overflow用户
提问于 2021-09-21 17:58:57
回答 1查看 361关注 0票数 0

下面是一个工作脚本。但让我烦恼的是:

代码语言:javascript
复制
    - name: install npm
      run: npm i npm@latest
      working-directory: ./functions

我必须安装NPM的最新版本,否则我会得到以下错误:

代码语言:javascript
复制
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!

忽略此错误并不会安装运行Firebase函数所需的npm包。我有其他的github动作脚本不需要这样的手握。我在这里做错什么了?

完整脚本:

代码语言:javascript
复制
name: Deploy to Firebase Functions

on:
  push:
    branches:
      - main
    # Optionally configure to run only for specific files. For example:
    paths:
    - "functions/**"

jobs:
  main:
    name: Deploy
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js 14
      uses: actions/setup-node@v2
      with:
        node-version: '14'
    - name: install npm
      run: npm i npm@latest
      working-directory: ./functions
    - name: install libraries
      run: npm i
      working-directory: ./functions
    - name: install firebase
      run: npm i firebase-tools -g
    - name: deploy
      run: firebase deploy --only functions --token ${{ secrets.FIREBASE_FUNCTIONS_TOKEN }}
      working-directory: ./functions
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 18:43:30

问题是,生成package-lock.jsonpackage-lock.json版本与Node.js V14中包含的npm版本不兼容。

第一个选项可以是在CI中使用这样的Node.js版本,该版本已经包含了与lockfileVersion@2兼容的此类npm版本。但是,lockfileVersion@2npm第7版支持的,它是最新的 Node.js版本的一部分。使用LTS版本的Node是一个更好的选择,因为未来的安全更新,所以我不推荐这个选项。

作为第二种选择,packgage-lock.json可以使用带有npm V6的Node.js LTS版本重新生成。这样,lockfileVersion就可以用于Node 14 (现在是LTS版本)的CI。我认为这是最好的选择。

作为第三种选择,一个想法是尝试npm ci命令,但我不确定这种方法在这种情况下是否有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69273523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档