module-alias node 注册自定义模块的包
注册自定义包的方法比较多,有动态导入,但是很多时候为了方便使用一般会用workspace 或者link 模式,module-alias 实际上是自定义了一个loader 方便自定义加载,deno 是通过配置可以解决,ts ,vite 等有alias 莫斯哈
参考玩法
当然不同版本的node 玩法会有差异
- 定义
// my-aliases.mjs
import { addAlias, addAliases } from 'module-alias'
addAlias('@utils', process.cwd() + '/src/utils')
// or
addAliases({
'@utils': process.cwd() + '/src/utils',
'@lib': process.cwd() + '/src/lib'
})
// Custom handler function
addAlias('@src', (fromPath, request, alias) => {
// fromPath - Full path of the file from which `import` was called
// request - The path that was passed into `import` (e.g. '@src/utils.js')
// alias - The alias being matched (`@src` in this case)
const subpath = request.slice(alias.length) // e.g. '/utils.js'
const base = fromPath.includes('/tests/') ? '/mocks' : '/src'
return process.cwd() + base + subpath
})
- 启动
node --import ./my-aliases.mjs ./app.mj
说明
通过alias 模式加载还是很有必要的,有利于工程化,同时利用好也可以进行模块替换
浙公网安备 33010602011771号