使用 纯函数工具(ramda.js) 解析 .yarnrc/.npmrc 配置文件的例子
源代码,依赖 ramda.js

./utils/parseConfig

((root, factory) => {if (typeof define === 'function' && define.amd) {define(['ramda'], factory);} else if (typeof exports === 'object') {var R = require('ramda');module.exports = factory(R);} else {root.parseConfig = factory(root.R);}
})(this, (R) => {let regs = {trimzy:R.replace(/\\\\/g,"\\"), // 去除多余的转义符trims:R.replace(/^(\s|\"|\'|\ )+|(\s|\"|\'|\ )+$/g,'')// 去除端引号和空格}return function creteConverter(annotator,spliter){return R.compose(R.fromPairs,//转成二维数组转为对象R.filter(arr=>arr[0] !=""),//过滤掉key为空的R.map(R.compose(R.map(regs.trims), // 去除两端多余的 双引号/单引号/空白R.split(spliter),       // 使用 key value 分隔符regs.trimzy // 去除路径中转义符)), // 转为二维数组,并去key为空的数据R.filter(s=>R.both(str=>str[0]!=annotator, //去除 # 注释行str=>R.trim(str)!="" //去除空行)(s)),R.map(R.trim),//去除两段空白R.split(/\r\n|\r|\n/) // 分行)}
});

node 使用示例

const parseConfig = require("./utils/parseConfig");
const os = require("os");
const path = require("path");
const fs = require("fs");
const homedir = os.homedir();let parseYarnConfig = parseConfig("#"," ")
let parseNpmConfig = parseConfig(";","=")var str = fs.readFileSync(path.join(homedir,".yarnrc")).toString();
var str2 = fs.readFileSync(path.join(homedir,".npmrc")).toString();var config = parseYarnConfig(str);
var config2 = parseNpmConfig(str2);console.log(config);
console.log(config2);

浏览器端使用示例

require([”./utils/parseConfig“],function(parseConfig){var parser = parseConfig("#"," ")var teststr=`
# 配置文件示例
# 这是一段注释
cache "D:\\yarn\\cache"
global "D:\\yarn\\global"
`console.log(parser(teststr))
})

使用 ramda 解析 .yarnrc/.npmrc 配置文件的例子相关推荐

  1. python配置文件解析_Python中配置文件解析模块-ConfigParser

    Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置). 配置文件的格式是: []包含的叫section, section 下有option=valu ...

  2. nginx解析php文件设置_nginx 解析php conf配置文件

    本博客的nginx 配置文件 server { listen 80;#80和443端口同时监听 listen 443 ssl; server_name www.koukousky.com koukou ...

  3. 解析游戏关卡配置文件及游戏角色配置文件

    角色出生点配置文件 <?xml version="1.0" encoding="utf-8" ?> <Nodes><Node ID ...

  4. java dom 解析xml 例子,Java DOM解析XML的幾個例子

    Sample1: 1:新建XML文檔 books.xml,放到項目的根目錄下. xmlns="http://test.org/books"> Thinking in JAVA ...

  5. Pull和SAX解析XML,以解析中国省市列表为例子

    废话不说直接上代码 //地区对象 public class Area { private String aName ; //地区名 private String aCode ; //地区号 publi ...

  6. sed mysql配置文件_shell解析my.cnf配置文件

    my.cnf配置格式如下 vi my.cnf [client] port=3306 socket=/tmp/mysql.socket [mysqld] port=3306 server-id=1 da ...

  7. 解析davinci快捷键配置文件

    davinci resolve 是一款非线性影片剪辑软件,mac 下快捷键配置文件位于: lucas@lucasdeMacBook-Pro DaVinci Resolve % pwd /Users/l ...

  8. spring是如何解析自己的配置文件的

    http://kb.cnblogs.com/a/1729330/ 转载于:https://blog.51cto.com/2820354/823101

  9. 解析darknet网络配置文件用了哪些层

    参考ultralytics/yolov3 def parse_model_config(path):"""Parses the yolo-v3 layer configu ...

最新文章

  1. mysql多表查询书籍_MySQL多表查询及子查询
  2. [Z]如何使用OpenGL扩展
  3. MySQL索引和SQL调优手册
  4. 《互联网+流通——F2R助力传统产业创新与转型》一一第1章 “互联网+”的新时代...
  5. Jmeter(二)关联
  6. mysql 大数据量插入遇到瓶颈 可行性方案探究
  7. win32开发(调试)
  8. Http Body 的四种格式
  9. java session超时判断_详解SpringBoot中Session超时原理说明
  10. 6个usb口服务器无响应,USB接口不能用(没反应)修复方法
  11. VScode使用element-ui插件准备
  12. 他是程序员出身,如今身价上亿!一人干出了美国版的:携程、安居客、看准网!...
  13. 企业内部信息安全管理——(一)风险识别和管控
  14. 导致Android手机崩溃的壁纸,一张壁纸导致安卓手机崩溃作者首发声:绝非故意...
  15. 万物皆可傅里叶|傅里叶分析之掐死教程(完整版)
  16. PostgreSQL AUTO INCREMENT
  17. 20.EC实战 笔记本电脑的休眠唤醒是如何实现的
  18. matlab绘制二维曲线图
  19. 221. k8s_v1.15addons插件部署
  20. DNA存储:这些公司正在开启数据存储的未来

热门文章

  1. 人工智障学习笔记——机器学习(15)t-SNE降维
  2. 动态规划——最大子矩阵(hdu1081)
  3. C++ const用法 尽可能使用const
  4. SpringBoot—Entity父子类表@Inheritance和@MappedSuperclass
  5. Ubuntu提示boot空间不足
  6. 【数字图像处理】求图像rice.png中米粒个数
  7. python-字符串的切片操作
  8. 设置centos上的redis可以被访问
  9. flask-01-http通信的回顾
  10. django-如何让首页不要报错