【若川视野 x 源码共读】第36期 | omit.js

67 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

参考:www.yuque.com/ruochuan12/…

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",

我也没做调试,肉眼可见, maincjsmoduleesm应该没错吧。

就我了解的阮一峰的,应该是下面这样子的,应该是一样的意思吧。

es6.ruanyifeng.com/?search=Ref…

"exports"{
  "require": "./index.js",
  "import": "./esm/wrapper.js"
}

依赖

father

github.com/umijs/fathe…

father: Library toolkit based on rollup, docz, storybook, jest, prettier and eslint。

支持文档、打包、测试、代码检查。有点牛逼的东西。是属于 umi

omit.jspackage.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更少配置

\