minlog
article thumbnail

번들러(bundler)

개발시 SASS , vue , react ,svg ,... 등의 기능들을 이용해 작업을 하는데, 실제로 웹에서 동작하지는 않기 때문에 번들러를 통해 변환하는 과정으로 웹 (HTML / CSS/ JS)에서 사용된다.

ex ) sass = > package ( 번들러 sass 설치 ) = > css로 변환

  • parcel : 구성 없는 단순한 자동 번들링 (소/중형 프로젝트에 적합)
  • webpack : 매우 꼼꼼한 구성 (중/대형 프로젝트에 적합)

 

1. parcel bundler 설치

터미널에서 번들러 설치

npm i -D parcel-bundler

 

2. Parcel - 정적 파일 관리 추가하기

파비콘등 이미지의 정적 파일들을 dist 폴더로 자동으로 넣어주는 기능 추가하기

 

2-1. npm 기능 추가

npm install -D parcel-plugin-static-files-copy

 

parcel-plugin-static-files-copy

ParcelJS plugin to copy static files from static dir to bundle directory.. Latest version: 2.6.0, last published: 2 years ago. Start using parcel-plugin-static-files-copy in your project by running `npm i parcel-plugin-static-files-copy`. There are 8 other

www.npmjs.com

 

2-2. package.json 에서 옵션 추가

위의 모듈을 설치한 후 패키지 파일을 확인하면, devDependencies에 parcel-plugin-static-files-copy가 추가된 것을 확인 할 수 있다.

staticFiles 을 추가하여 정적 파일의 경로를 추가 자동으로 dist 폴더에 관리 할수 있도록 설정해준다.

📑package.json

{
  "name": "psrcel-template-basic",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "parcel index.html",
    "build": "parcel build index.html"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "parcel-bundler": "^1.12.5",
    "parcel-plugin-static-files-copy": "^2.6.0",
    "sass": "^1.65.1"
  },
  "staticFiles" : {
    "staticPath":"static"
  }
}

2-3. 실제 폴더 생성 및 파비콘추가 확인하기

폴더 경로에 파일 추가 => npm run dev 실행 => dist폴더 하위에 favicon.ico 파일이 추가 생성 된다.

 

 

3. 공급업체 접두사 (Vender Prefix)

display : flex;
display : webkit-box;
display : ms-flexbox;

공급업체 접두사란 웹 표준 이아닌 특정 브라우저에서 사용가능한 접두사 css기술이다 .

위와 같은 접두사들을 각각 외워서 사용하기 어려울 수 있어 자동으로 생성해주는 모듈(패키지)이 있다.

 

3-1.모듈 설치

npm i -D postcss autoprefixer

  • postcss
  • autoprefixer

두개의 패키지를 설치해준다.

 

3-2.package.json 에서 ' browerslist' 옵션 추가

browerslist 옵션은 현제 NPM 프로젝트에서 지원할 브라우저의 범위를 명시하는 용도.

명시된 내용을 Autoprefixer패키지가 활용하게된다.

설정 내용

  • "> 1%" : 전세계 점유율이 1% 이상인 모든 브라우저
  • "last 2 versions" : 해당 브라우저들의 두개의 버전을 보유

📑 package.json

{
  "name": "psrcel-template-basic",
      ...
  "devDependencies": {
    "autoprefixer": "^10.4.15",
    "parcel-bundler": "^1.12.5",
    "parcel-plugin-static-files-copy": "^2.6.0",
    "postcss": "^8.4.27",
    "sass": "^1.65.1"
  },
  "staticFiles": {
    "staticPath": "static"
  },
  "browerslist":[
    "> 1%",
    "last 2 versions"
  ]
}

 

3-3. ' .postcssrc.js'파일 생성

※rc(Runtime Configuration 의 약어)가 붙은 파일로 구성파일을 의미

  • ESM - 브라우저에서 사용
    • 가져오기 : import
    • 내보내기 :export
  • CommonJs - 번들러를 통한 node.js 방식
    • 가져오기 : require()
    • 내보내기 : module.exports

📑 .postcssrc.js

// 가져오기 : import autoprefixer from 'autoprefixer'
const autoprefixer = require('autoprefixer');


// 내보내기 : export{Plugins:[autoprefixer]}
module.exports = {
    Plugins:[
        autoprefixer
    ]
}

위의 코드를 간소화 (명칭 지정 없이 바로 가져와서 내보내기)

module.exports = {
    Plugins:[
        require('autoprefixer')
    ]
}

 

 

4. babel

※ 자바스크립트 표준 = ECMScript = ES

ECMScript 2015(최신 ES6) 코드를 이전 Javascript 엔진(구형 버전)에서 실행할 수 있도록 이전 버전과 호환되는 javascript 버전으로 변환하는데 사용되는 무료 컴파일러.

 

4-1.모듈 설치

npm i -D @babel/core @babel/preset-env

  • @babel/core
  • @babel/preset-env

두개의 패키지를 설치해준다.

 

4-2. ' .babelrc.js'파일 생성

📑 .babelrc.js

module.exports= {
    presets : ['@babel/preset-env']
}

 

4-3.package.json 에서 ' browerslist' 옵션 추가

위의 Vender Prefix에서 설정과 동일하다. 한번 설정했을시 추가할 필요 없음.

설정 내용

  • "> 1%" : 전세계 점유율이 1% 이상인 모든 브라우저
  • "last 2 versions" : 해당 브라우저들의 두개의 버전을 보유

4-4 . javascript async / await 사용을 위한 모듈 추가 설치

npm i -D @babel/plugin-transform-runtime

4-5. ' .babelrc.js'파일 추가 설정 생성

📑 .babelrc.js

module.exports= {
    presets : ['@babel/preset-env'],
    Plugin : [
        ['@babel/plugin-transform-runtime']
    ]
}

 

 

5. Parce CLI 옵션 확인하기

https://ko.parceljs.org/cli.html

 

🖥 커맨드 라인 인터페이스(CLI)

시작하기 기능 📦 애셋 유형 고급 🖥 커맨드 라인 인터페이스(CLI) 명령어 Serve 개발용 서버를 시작합니다. 앱이 수정되면 자동으로 다시 빌드하고, 빠른 개발을 위해 빠른 모듈 교체를 지원합니

ko.parceljs.org

 

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!