[3] resolve(解析)

102 阅读1分钟

一、作用

resolve选项能配置模块如何解析,实现路径优化

二、resolve 几个属性

解析模块,路径优化。

1 resolve.alias

作用:创建 import 或 require 的别名,来确保模块引入变得更简单。
例如:一些位于 src/ 文件夹下的常用模块:

resolve: {
  alias: {
    '@': resolve('src'),
    '@modules': path.resolve(__dirname, './src/modules/'),
  },
},

说明:注意vue-cli中,@默认为src;在webpack.config.js中我们不能使用../ 以及./这种形式的路径方式,而是通过 path.join 和 __dirname 这种形式来表示路径,否则会报错。

2 resolve.enforceExtension boolean

作用:默认为false:允许没有扩展名;true:必须有扩展名
说明:建议为false,结合extensions属性一起使用

3 resolve.extensions 数组建议使用

作用:自动解析确定的扩展名,能够使用户在引入模块时不带扩展名。 默认值为:

extensions: [".js", ".json"]

例如

import File from '../path/to/file(.js/json/ts)';

配置好后,就可以省略后缀名,否则如果你引入一个ts文件,就要写.ts。
说明: 使用此选项,会覆盖默认数组,这就意味着 webpack 将不再尝试使用默认扩展来解析模块。

extensions: [".js", ".json", "ts"]

三、路径解析: path.resolve([from...], to)

/ 绝对路径 ,开头不带.

./ 相对路径,本目录

../ 相对路径,上一级目录

.__dirname代表的是当前文件所在文件的绝对路径

作用:

path.resolve()方法可以将多个路径解析为一个规范化的绝对路径

给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。

'@modules': path.resolve(__dirname, './src/modules/'), // D:\projectName\src\modules