本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
【若川视野 x 源码共读】第36期 | 可能是历史上最简单的一期 omit.js 剔除对象中的属性点击了解本期详情一起参与。
1.主要功能
npm i --save omit.js
var omit = require('omit.js');
omit({ name: 'Benjy', age: 18 }, [ 'name' ]); // => { age: 18 }
就是浅拷贝一个对象,并删除指定的若干属性。其中,浅拷贝使用的是 Object.assign API 。
2.测试
先看一下测试文件。
通过查看 package.json ,发现有 test 命令,实际执行的是 father test ,执行一下。
npm run test
测试是都通过了,说一下 assert.deepEqual API,这个函数的意思是测试两个对象可枚举的自身属性值是否相等(即==),子对象中的可枚举自身属性也会测试。
3.命令分析
看看 package.json 中的 main 属性是 lib/index.js ,我看了一下项目并没有这个文件,我想可能是打包后生成的,于是看到了 compile 命令。
"main": "lib/index.js",
"compile": "father build"
执行一下
npm run compile
果然生成了 lib 目录,还有 es 目录。
lib 目录是 commonjs 规范, es 是 es moudle 规范。
还有一些其他的命令, 由于能力有限,就不多说了。
"scripts": {
"start": "father doc dev --storybook",
"build": "father doc build --storybook",
"compile": "father build",
"gh-pages": "father doc deploy",
"prepublishOnly": "npm run compile && np --yolo --no-publish",
"lint": "eslint .",
"test": "father test",
"coverage": "father test --coverage"
},
4.吐槽一下
源代码只有 10 行,功能很简洁,但让我痛苦的不是看不懂,你们知道吗,它的依赖有多大, 593 M !在我这个网速不稳定的环境下,失败了 3 次,最后用 cmd 终端才安装完成。