+5

Webpack 5: Webpack resolve alias - extensions

Webpack từ A đến Á cùng kentrung

Bài hôm nay chúng ta sẽ học cách tạo alias trong webpack cùng với cách xử lí đuôi file mở rộng extensions

1. Alias là gì?

Alias là đường dẫn tuyệt đối thay thế cho đường dẫn tương đối khi import các module. Ví dụ như sau:

// thay vì
import Menu from '../../../components/Menu'

// thì dùng
import Menu from '@components/Menu'

Cách bên dưới chính là sử dụng alias, cách này giúp chúng ta đỡ phải viết đường dẫn dài dòng, phải so sánh vị trí tương đối giữa file đang code với file muốn import. Nói chung người ta hay dùng alias để tạo đường dẫn root cho dự án.

2. resolve.alias

const path = require('path')

module.exports = {
  ...
  resolve: {
    alias: {
      '@components': path.resolve(__dirname, './src/components')
    }
  }
};

Lưu ý là khi ta sử dụng alias thì trong lúc viết code có thể bị hai vấn đề sau:

  • Eslint không hiểu và báo lỗi.
  • eslint error
  • Texteditor cụ thể là mình đang sử dụng là VSCode không gợi ý.

2-1. Cách fix Eslint

Ta add thêm thư viện sau đây

npm install eslint-plugin-import eslint-import-resolver-alias --save-dev

Tạo file .eslintrc.js tại thư mục root của dự án

module.exports = {
  settings: {
    'import/resolver': {
      alias: [
        ['@components', './src/components'],
      ]
    }
  }
}

2-2. Cách fix VSCode

Tạo file jsconfig.json tại thư mục root của dự án

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@components/*": ["src/components/*"]
    }
  },
  "exclude": ["node_modules"]
}

3. resolve.extensions

Giải quyết các đuôi file mở rộng theo thứ tự.

Code file webpack.config.js

module.exports = {
  //...
  resolve: {
    extensions: ['.wasm', '.mjs', '.js', '.json']
  }
};

If multiple files share the same name but have different extensions, webpack will resolve the one with the extension listed first in the array and skip the rest.

Nếu nhiều tệp có cùng tên nhưng có đuôi file khác nhau, webpack sẽ giải quyết tệp có đuôi file được liệt kê đầu tiên trong mảng và bỏ qua phần còn lại.

Cách sử dụng:

// thay vì
import File from '../path/to/file.js'

// thì dùng
import File from '../path/to/file'

Bài viết đến đây là hết, hi vọng với bài viết này các bạn đã thêm được nhiều kiến thức bổ ích. Hẹn gặp lại các bạn ở bài viết tiếp theo!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí