Hri*_*dov 7 javascript npm webpack
我正在开发一个没有用户导入的构建的模块。相反,他导入各个组件,然后将它们与他的代码捆绑在一起。然而,这些组件共享实用程序,我想导入它们而不经历相对路径地狱。
我知道这是一个很常见的问题,我做了一些研究。假设我有module/components/foo/bar/baz/index.js想要导入的module/utils/helper.js
只需使用相对路径并执行以下操作:
import helper from '../../../../utils/helper'
Run Code Online (Sandbox Code Playgroud)
使用module-alias包并具有:
import helper from '@utils/helper'
Run Code Online (Sandbox Code Playgroud)
这在 Node.js 中是可行的,因为模块是在运行时解析的。但是,假设模块用户拥有 Webpack 并导入该模块:
import component from 'module/components/foo/bar/baz'
Run Code Online (Sandbox Code Playgroud)
@utils除非用户在自己的Webpack 配置中指定该别名,否则Webpack 将无法解析。那会很烦人。
在webpack.config.js中使用 Webpack 别名:
module.exports = {
resolve: {
alias: {
'@utils': path.join(__dirname, 'utils')
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果模块是预先捆绑的,那么这将工作得很好。但正如我之前提到的,我希望该库能够与 ES6 导入一起使用,以便用户可以仅捆绑他们需要的部分。
我可以在模块自己的源代码中使用模块名称:
import helper from 'module/utils/helper'
Run Code Online (Sandbox Code Playgroud)
这似乎解决了问题,但我认为这是一个非常糟糕的解决方案。对于开发,您必须创建一个符号链接node_modules/module -> module。我确信这隐藏了许多潜在的问题,合作者也必须手动完成。
有没有办法避免相对路径,同时允许库与 ES6 导入一起使用?
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |