webpack 引用模块路径中包含了~

7,010次阅读
没有评论

共计 659 个字符,预计需要花费 2 分钟才能阅读完成。

在使用 webpack 开发的时候,引入一个模块

import xx from '../../../xxx/xxx'

通过会是上面这样的,但相对路径写着有点繁琐,就设置一个 alias 吧。

例如

resolve: {
  ...,
  alias: {'@': resolve('src')
  }
}

配置 @ 为项目根目录下放资源和源码的 /src 目录的别名。


import Utils from '@/utils'

于是就可以这样引入模块。

但是在 css 文件,如 lesssassstylus 中,使用 @import '@/style/theme' 的语法引用相对 @ 的目录确会报错,”找不到‘@’目录”,说明 webpack 没有正确识别资源相对路径。

原因是 css 文件会被用 css-loader 处理,这里 css @import 后的字符串会被 css-loader 视为绝对路径解析,因为我们并没有添加 css-loaderalias,所以会报找不到 @ 目录。

引用路径的字符串最前面添加上 ~ 符号,如 @import '~@/style/theme'Webpack 会将以 ~ 符号作为前缀的路径视作依赖模块而去解析,这样 @alias 配置就能生效了。

各类非 js 直接引用(import require)静态资源,依赖相对路径加载问题,都可以用 ~ 语法完美解决。

例如 css module 中:@import '~@/style/theme'

css 属性中:background: url('~@/assets/xxx.jpg')

html 标签中:<img src="~@/assets/xxx.jpg" alt="alias">

正文完
 0
评论(没有评论)
验证码