携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
- 本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
- 这是源码共读的第36期,链接:juejin.cn/post/711878…。
Utility function to create a shallow copy of an object which had dropped some fields.
作用:创建对象的浅拷贝对象,里面删掉一些属性。
var omit = require('omit.js');
omit({ name: 'Benjy', age: 18 }, [ 'name' ]); // => { age: 18 }
源码
function omit(obj, fields) {
// 浅拷贝对象
const shallowCopy = Object.assign({}, obj);
// fields :[ 'name' ]
for (let i = 0; i < fields.length; i += 1) {
// 删除属性
const key = fields[i];
delete shallowCopy[key];
}
return shallowCopy;
}
export default omit;
确实简单。
支持两种模块方式引入
{
"name": "omit.js",
"version": "2.0.2",
"description": "Utility function to create a shallow copy of an object which had dropped some fields.",
"main": "lib/index.js",
"module": "es/index.js",
"types": "index.d.ts",
我也没做调试,肉眼可见, main
是 cjs
, module
是 esm
应该没错吧。
就我了解的阮一峰的,应该是下面这样子的,应该是一样的意思吧。
es6.ruanyifeng.com/?search=Ref…
"exports":{
"require": "./index.js",
"import": "./esm/wrapper.js"
}
依赖
father
father: Library toolkit based on rollup, docz, storybook, jest, prettier and eslint。
支持文档、打包、测试、代码检查。有点牛逼的东西。是属于 umi
的
在omit.js
的package.json
文件中的好几个 npm script
都有用到,例如:
"start": "father doc dev --storybook",
"build": "father doc build --storybook",
"compile": "father build",
"gh-pages": "father doc deploy",
@umijs/fabric
umi-fabric:一个包含 prettier,eslint,stylelint 的配置文件合集
np
np: A better npm publish
"prepublishOnly": "npm run compile && np --yolo --no-publish",
更好的用来提交、选版本、发布
总结
1、学习一包多钟导出,支持两种模块方式引入
2、 强大的father
,支持文档、打包、测试、代码检查。感觉把主文件 index.js
改一下,这包可以直接拿来自己用,比之前的 await-to-js
更少配置
\