共计 659 个字符,预计需要花费 2 分钟才能阅读完成。
在使用 webpack 开发的时候,引入一个模块
import xx from '../../../xxx/xxx'
通过会是上面这样的,但相对路径写着有点繁琐,就设置一个 alias 吧。
例如
resolve: {
...,
alias: {'@': resolve('src')
}
}
配置 @ 为项目根目录下放资源和源码的 /src 目录的别名。
import Utils from '@/utils'
于是就可以这样引入模块。
但是在 css 文件,如 less、sass、stylus 中,使用 @import '@/style/theme' 的语法引用相对 @ 的目录确会报错,”找不到‘@’目录”,说明 webpack 没有正确识别资源相对路径。
原因是 css 文件会被用 css-loader 处理,这里 css @import 后的字符串会被 css-loader 视为绝对路径解析,因为我们并没有添加 css-loader 的 alias,所以会报找不到 @ 目录。
引用路径的字符串最前面添加上 ~ 符号,如 @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">
正文完