前端团队规范——vue 项目强制限制 node 版本

585 阅读1分钟

前言

通过配置 package.json 里面的 engines 来限制 node 版本,通过测试发现只对 yarn 有效果,对npm是没有限制效果的,网上说的将 engine-strict=true 放在 .npmrc 文件中的方法在 npm 3.0.0 中已经不支持了,所以我这里是通过自定义方法来进行 node 版本控制。(支持 npmyarn

其他规范可参考以下:

步骤

  1. 配置package.json文件

    {
      "name": "my package",
      "scripts": {
        "check-version": "babel-node check-version.mjs",
        "postinstall": "npm run check-version"
      },
      // 需要安装的依赖
      "dependencies": {
        "@babel/node": "^7.22.6",
        "semver": "^7.5.3",			
      },
      "engines": {
        "node": ">=16.0.0 <17.0.0"  // 按照自己的需求写
      }
    }
    
  2. 在项目的根目录下创建check-version.mjs

    // check-version.mjs文件内容
    import semver from 'semver';
    import fs from 'fs';
    
    const packageJson = fs.readFileSync('./package.json', 'utf8');
    const packageObj = JSON.parse(packageJson);
    const version = packageObj.engines.node;
    
    console.log('项目规定 node 版本:' + version);
    console.log('当前本地 node 版本:' + process.version);
    
    if (!semver.satisfies(process.version, version)) {
      console.log(`node 版本校验不通过,所需的 node 版本 ${version} 不匹配当前版本 ${process.version}.`);
      process.exit(1);
    } else {
      console.log('node 版本校验通过');
    }
    
  3. 在终端进行验证

    npm run check-version
    
  4. 完成,此后通过 npm install 时,不符合版本的安装将会被拦截。