内网环境安装依赖,源码补丁,删除node-modules

57 阅读2分钟

1.客户内网环境无法使用 arcgis 在线资源安装包,因此使用了离线静态资源包

静态资源位置:public/G423

package.json 配置:scripts:{"copy": "ncp ./node_modules/@arcgis/core/assets ./public/arcgisAssets"}

2.客户内网环境无法安装使用公司内部组件库,因此使用了离线静态资源包

静态资源位置:src/lib/custom-component

package.json 配置:dependencies:{ "sharewin-ui-vue": "file:./src/lib/custom-component"}

3.echarts 散点图拟合,官方提供的的指数拟合方法与客户的 excel 拟合效果不一致,因此修改了 echrts-stat 源码,新增了 exponentialexcel 算法,并打了补丁供其他开发者下载安装。

安装 patch-package===》pakcge.json 中配置:scripts:{"postinstall": "patch-package"}===》修改源码===》yarn patch-package echarts-stat===》 根目录生成 patches/echarts-stat+1.2.0.patch 补丁包===》提交补丁至 git 仓库,其他开发者可直接拉取补丁并在安装依赖时自动应用。

注意:patch-package 不支持 cnpm、pnpm,仅支持 npm、yarn,因此最好使用 yran 打补丁

附echarts-stat指数excel拟合算法:

			exponentialexcel: function (data) {
				var predata1 = dataPreprocess(data);
				var sumX = 0;
				var sumY = 0;
				var sumXXY = 0;
				var sumYlny = 0;
				var sumXYlny = 0;
				var sumXY = 0;

				var sumX = 0;
				var sumY = 0;
				var sumXY = 0;
				var sumXX = 0;
				var len = predata1.length;
				var predata = [];

				for (var i = 0; i < len; i++) {
					if (predata1[i][1] <= 1e-10) {
						continue;
					}
					var coordinate = [predata1[i][0], Math.log(predata1[i][1])];
					predata.push(coordinate);
				}

				len = predata.length;
				for (var i = 0; i < len; i++) {
					sumX += predata[i][0];
					sumY += predata[i][1];
					sumXY += predata[i][0] * predata[i][1];
					sumXX += predata[i][0] * predata[i][0];
				}


				var gradient = ((len * sumXY) - (sumX * sumY)) / ((len * sumXX) - (sumX * sumX));
				var intercept = (sumY / len) - ((gradient * sumX) / len);
				var a = Math.pow(Math.E, intercept);
				var b = gradient;

				var result = [];
				var y2 = [];
				var yAve = 0;
				for (var j = 0; j < predata.length; j++) {
					var coordinate = [predata[j][0], a * Math.pow(Math.E, b * predata[j][0])];
					result.push(coordinate);
					var coorY = Math.log(a) + b * predata[j][0];
					yAve += coorY;
					y2.push(coorY)
				}
				yAve /= predata.length;
				var ssr = 0;
				var sst = 0;
				for (var i = 0; i < predata.length; i++) {
					var s1 = y2[i] - yAve;
					ssr += s1 * s1;
					var s2 = predata[i][1] - yAve;
					sst += s2 * s2;
				}
				var r2 = ssr / sst;

				var string = 'y = ' + Math.round(a * 10000) / 10000 + 'e^' + Math.round(b * 10000) / 10000 + 'x \r\n  R² = ' + Math.round(r2 * 10000) / 10000;
				return {
					points: result,
					parameter: {
						coefficient: a,
						index: b
					},
					expression: string
				};

			},

4.当无论如何总是删不掉node-modules时,可以安装rimraf,然后使用rimraf node_modules删除依赖