项目作者: Hazyzh

项目描述 :
a plugin for babel to load on demand from import.
高级语言: JavaScript
项目地址: git://github.com/Hazyzh/babel-plugin-import-separation.git
创建时间: 2018-02-08T01:57:41Z
项目社区:https://github.com/Hazyzh/babel-plugin-import-separation

开源协议:

下载


babel-plugin-import-separation

plugin为了按需引入库里面的文件和内容


在哪里去添加 babel-plugin-import-separation

为什么要用 babel-plugin-import-separation

此插件参考babel-plugin-import相关思路,在使用babel-plugin-import中有一些无法解决的问题,这里用另一种思路去解决问题,解决打包过程中一些问题。

  • 应用cdn资源时候可以按需引入样式文件
  • 不改写代码内部变量,只重新定义了引入变量

babel-plugin-import中,作者重写了引入内容,以新变量代替了原来引入的内容,并且在后续代码中修改了使用到的变量为修改后的名字,效果如下

  1. import { Button } from 'antd';
  2. ReactDOM.render(<Button>xxxx</Button>);
  3. var _button = require('antd/lib/button');
  4. ReactDOM.render(<_button>xxxx</_button>);

本插件只改变import相关内容,用相同变量名覆盖之前引入的内容,不该写后续代码逻辑,转换后代码如下

  1. import Button from 'antd/lib/button';
  2. ReactDOM.render(<Button>xxxx</Button>);

而且相关配置支持只引入样式文件,不该写其他内容,满足了cdn引入相关资源又自定义样式的业务需求。

实例

{ "libraryName": "antd" }

  1. import { Button } from 'antd';
  2. ReactDOM.render(<Button>xxxx</Button>);
  3. import Button from 'antd/lib/button';
  4. ReactDOM.render(<Button>xxxx</Button>);

{ "libraryName": "antd", style: true }

  1. import { Button } from 'antd';
  2. ReactDOM.render(<Button>xxxx</Button>);
  3. import 'antd/lib/button/style';
  4. import Button from 'antd/lib/button';
  5. ReactDOM.render(<Button>xxxx</Button>);

使用

  1. npm install babel-plugin-import-separation --save-dev

babelrc或者babel-loader中写入配置

  1. {
  2. "plugins": [["import-separation", options]]
  3. }

支持多个库

babel6 及以下版本如下

  1. {
  2. "plugins": [
  3. ["import-separation",
  4. [ {...option1}, {...option2} ]
  5. ]
  6. ]
  7. }

babel7 Options 不能为数组,但是你可以添加多次用不同的名字

  1. {
  2. "plugins": [
  3. ["import-separation", options1, 'antd'],
  4. ["import-separation", options2, 'lodash']
  5. ]
  6. }