看到许多公共模块都可以通过子路径进行引入,比如ant-desin
:
import { Button } from 'antd/lib/button';
但是我自己写的模块发布到npm
上,同样尝试使用这种方式引入其中子路径下某一个入口文件,发现会报错:
const AdaBoost = require('mlhelper/algorithm/AdaBoost');
//or
import AdaBoost from 'mlhelper/algorithm/AdaBoost';
直接就报module not found
的错误。
请教如何做才能实现这种按需加载?
你需要打包成多份文件, 而不是单一的 bundle 文件.
mlhelper/algorithm/AdaBoost
会被解析成node_modules/mlhelper/algorithm/AdaBoost
显然你的mlhelper
包里没有 algorithm 目录. 你可以require('mlhelper/src/algorithm/AdaBoost')
前提是你的使用环境配置了对 node_modules 里面 ts 内容的编译.你需要配置 tsconfig.json 将你的
src
的每个以文件编译到另一个lib
目录下.