如何实现按子路径引入模块

看到许多公共模块都可以通过子路径进行引入,比如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的错误。

请教如何做才能实现这种按需加载?

阅读 2.6k
2 个回答

你需要打包成多份文件, 而不是单一的 bundle 文件. mlhelper/algorithm/AdaBoost 会被解析成 node_modules/mlhelper/algorithm/AdaBoost 显然你的 mlhelper 包里没有 algorithm 目录. 你可以 require('mlhelper/src/algorithm/AdaBoost') 前提是你的使用环境配置了对 node_modules 里面 ts 内容的编译.

你需要配置 tsconfig.json 将你的 src 的每个以文件编译到另一个 lib 目录下.

就是类似这样的操作:https://github.com/Jiasm/tetr...

单独创建一个index.js文件做索引,在里边把其他的module引入进来即可。

a.js
export default XXX
b.js
export default XXX
index.js
export {default as a} from 'a.js'
export {default as b} from 'b.js'
app.js
import {a, b} from '.'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题