[Laravel] Mix 사용법

[Laravel] Mix 사용법 updated_at: 2024-01-30 17:59

Laravel Mix 사용법

참조 : https://laravel.com/docs/10.x/mix
참조 : https://github.com/laravel-mix/laravel-mix/tree/master/docs

목적

Lavavel Mix는 npm으로 설치된 node_modules 내의 js 나, css 혹은 사용자가 정의한 resources를 다시 컴파일 하여 하나의 js 나 css 파일로 만들어 준다. 또한 sass 등으로 정의된 css를 일반적인 css 파일로 전환을 한다.

사용법

1. webpack.mix.js 수정하기

webpack.mix.js 파일을 오픈하여 수정한다. 간단한 예를 아래에 기술하였다.

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css', [
        //
    ])

// bootstrap.css 및 사용자가 작성한 my.css를 하나로 묶어 public/assets/app.css 파일로 저장한다.
mix.styles([
    'node_modules/bootstrap/dist/css/bootstrap.css',
    'resources/css/my.css'
], 'public/assets/app.css').version();

// bootstrap.js 및 사용자가 작성한 my.js 하나로 묶어 public/assets/app.js 파일로 저장한다.
mix.scripts([
    'node_modules/bootstrap/dist/js/bootstrap.js',
    'resources/js/my.js',
], 'public/assets/app.js').version();

// sass file을 css 로 변경후 front.css 로 출력합니다.
mix.sass('resources/sass/front.scss', 'public/css');

// material-design-iconic-font 를 public/assets/fonts 폴더로 copy한다.
mix.copy([
     'node_modules/material-design-iconic-font/dist/fonts/'
], 'public/assets/fonts');

mix.copy([
    'node_modules/@fortawesome/fontawesome-free/webfonts/'
], 'public/assets/app/webfonts');

2. 실행하기

이제 콘솔로 접속하여 아래 명령어 중 하나를 입력하자

npm run dev // 개발모드로 실행
npm run production // production 모드로 실행(자동으로 minimize됨)

3. 적용하기

지정된 폴더에 파일 생성된 것을 확인하고 blade에서 include 하여 사용하면 끝이다.

예제1 FontAwesome 적용하기

font-awesom은 css와 font파일이 분리되기 때문에 이 부분을 함께 마주어 주어야 정상적으로 디스플레이 됩니다.
먼저 install 하기전에 font-awesome은 free(무료) 버전과 pro(유료) 버전이 존재하고 또한 유료버전에도 3개의 종류로 나눔니다.

font-awesome 4.x 예제

npm install

npm i font-awesome // 4.x 대가 install 됩니다.

resource 파일 수정

  • resources/sass/app.scss
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');

// Variables
@import 'variables';

// Bootstrap
@import '~bootstrap/scss/bootstrap';

// 내부기타 파일들을 링크 걸때
@import "./customize.scss";

//Font Awesome
@import "node_modules/font-awesome/scss/font-awesome.scss";

webpack.mix.js 파일 수정

mix.sass('resources/sass/app.scss', 'public/css/app.css', {
    sassOptions: {
      quietDeps: true,
    },
  }
);

font-awesome 6.x 예제

install

npm i npm i @fortawesome/fontawesome-free // 현재(24년 6월) 6.x 대가 install 됩니다.

resource 파일 수정

  • resources/sass/app.scss
@import "~@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import '~@fortawesome/fontawesome-free/scss/solid.scss';
@import '~@fortawesome/fontawesome-free/scss/brands.scss';
@import '~@fortawesome/fontawesome-free/scss/regular.scss';

html에 삽입

아래는 html에 삽입시 여러가지 경우를 나타낸 것이다.

  • mix : mix를 사용하게 되면 css/app.css?id=ddeccd052c7874fd9e581456087209cf 처럼 일련번호가 붙어서 캐쉬적용을 받지 않는다.
  • Html을 사용하면 laravel에서 제공하는 기본 html 양식으로 보여준다.
<link media="all" type="text/css" rel="stylesheet" href="{{ mix('/css/app.css') }}">
<link media="all" type="text/css" rel="stylesheet" href="https://www.onstory.fun/css/app.css?id=ddeccd052c7874fd9e581456087209cf">

에러대처

cross-env: not found 에러 발생시

npm install cross-env			

spawn node_modules/webpack/bin/webpack.js ENOENT 에러 발생시 최악의 경우 아래처럼 모든 것을 지우고 다시 해 보시기 바랍니다.

rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force
npm install
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글