ant-tool/atool-doc

关于external的问题

Tankpt opened this issue · 7 comments

保留 exernal 有比较麻烦的问题

通常来说 external 的使用是在源码打包时,把一部分依赖通过全局解析,减小打包体积,但是在本地调试阶段,会通过 devDeps 引入

const $ = require('jquery');
import { xx } from 'your-module';

如果 doc 阶段也保持 external,就会导致在 examples 下的文件也无法 require 到正确的 module,本地调试会比较困难

我看模板是可以进行重置的,那其实使用者进行external的时候就默认应该自己去模板里面加相关的资源,那这个问题是不是可以解决的?

其实这个有一个问题。对于一些使用到动画的库,可以看看这个链接里面的一个例子, 简单描述下就是react的一些库(比如 react-addons-css-transition-group),如果不进行特殊处理,那打出来的结果会有俩份react,会报错,一般都是用dll或者external来解决。但是我看了源码。plugin也是会被默认重置,external也是被重置了。好像没办法解决这问题了

这种情况有没有考虑到呢?

这种情况的话,首先源码正常 build 和 发布 npm 都是没有问题的,实际使用中的也是会应用 external 的,唯一会有性能问题的就是 atool-doc --build 生成的静态文件

目前因为这些内容是是用来展示的 demo,并不是源码真正的 performance,所以没有考虑太多性能的问题

那其实使用者进行external的时候就默认应该自己去模板里面加相关的资源,那这个问题是不是可以解决的?

这里使用者自己去替换模版的话,成本其实蛮高的,而且一旦使用了自定义模版,后续 doc 的模版更新,用户都是无法继承的,所以这里权衡之下,选择了更简单的使用方式

打出来的结果会有俩份react,会报错,一般都是用dll或者external来解决。但是我看了源码。plugin也是会被默认重置,external也是被重置

这个问题没有 get 到,正常来说 react 的组件库是不应该直接依赖(dependencies) react 的,而是通过 peerDependencies 来间接控制所依赖的版本

其实前面的都是没关系的,最后一个点就是对于某些库

// react-addons-css-transition-group模块
// 入口文件 index.js
module.exports = require('react/lib/ReactCSSTransitionGroup');

这些库比如使用了一些动画这类的,如果不经过任何的处理,打包会打进两份react ,而这些只能使用external或者dll来解决,我意思是最终打包的时候

hello 这个问题。。那是无法解决是么?

image

react/lib/ReactCSSTransitionGroup 对 react 的依赖是 peerDeps,只要保证自身的 react 版本就可以保证只依赖一个