0
点赞
收藏
分享

微信扫一扫

项目包升级遇到的Node版本问题记录

witmy 2022-01-22 阅读 86

背景:

在升级公司内部头部依赖包的时候遇到的问题:
在升级头部的时候,头部依赖的包,没有锁包,安装依赖库的时候包依赖的包会自动升级

├─┬ @cnstrong/xxx
│ ├─┬ eslint@6.8.0
│ │ ├─┬ inquirer@7.3.3
│ │ │ ├─┬ chalk@4.1.0

chalk@4.1.0需要node10以上版本;

服务器上的node版本是8,所以老项目大部分应该用到的都是node8的版本,项目中的npm库依赖于node8
大部分包对node版本兼容比较好,但是有少数的包比较强依赖node版本,比如node-sass包

由于公共头部依赖的node10,所以项目中更改node-sass版本,并且服务器上对应的需要升级node版本

解决方案

方案一

公共头部锁包,安装第三方依赖库的时候会优先选择yarn.lock文件的依赖关系(目前线上node8的版本号是8.11.4,所以,建议在本地yarn install的时候切换到该版本,并将本地生成的yarn.lockpush到仓库),线上依赖的包就不会自动升级
老项目不需要做node版本升级

方案二

所有项目统一升级到node10以上,服务器上安装了node10.15.3,所以比如可以统一升级到该node版本;
升级步骤:

  1. 找运维人员添加切换node10配置
  2. 本地安装node10.15.3
  3. yarn install(更新yarn.lock文件)
  4. git push到仓库

方案三

node-sass对node版本依赖性强,可以使用sass包替换, webpack中的配置:

  1. 使用node-sass的配置如下:
{
				test: /\.(sc|sa)ss$/,
				use: [
					MiniCssExtractPlugin.loader,
					{
						loader: 'css-loader',
						options: {
							modules: {
								localIdentName: '[local]__[hash:base64:5]'
							}
						}
					},
					{
						loader: "postcss-loader",
						options: {
							config: {
								path: path.resolve(projectRoot, "build/postcss.config.js")
							}
						}
					},
					"sass-loader",
				]
			},
  1. 使用sass包更改后的配置如下:
    {
        test: /\.(sc|sa)ss$/,
        use: [
          MiniCssExtractPlugin.loader,
          {
            loader: 'css-loader',
            options: {
              modules: {
                localIdentName: '[local]__[hash:base64:5]',
              },
            },
          },
          {
            loader: 'postcss-loader',
            options: {
              config: {
                path: path.resolve(projectRoot, 'build/postcss.config.js'),
              },
            },
          },
          {
            loader: 'sass-loader',
            options: {
              implementation: require('sass'), //使用dart-sass代替node-sass
            },
          },
        ],
      },

总结

为了兼容老的项目,所以服务器环境仍然存在node低版本8.11.4;后续如果老项目有碰到依赖包与低版本node不兼容问题,修改jerkins打包配置,在打包时候切换到比较高的node版本
新建的项目仓库推荐大家使用比较高的版本,比如10.15.3版本,Jenkins上配置指定node版本

举报

相关推荐

0 条评论