기본적으로 제공되는 HTML, CSS, JS 같은 것들로만은 실질적으로 웹에서 동작할 수 있는 형태를 만들기에는 어려움이 있습니다. 그렇기 때문에 우리는 다양한 외부 프로그램(Sass, Vue, React...)을 사용하게 됩니다.이런 외부프로그램들을 우리는 Bundler 를 통해 HTML, Css, Js 에서 사용을 할 수 있습니다.
하지만 Bundler 자체에서 변환을 시켜주는 것이 아니고 Bundler 가 외부 패키지(uue-template-compiler, typlescript ...)의 도움을 받아서 변환을 시켜주는 것 입니다.
Bundler 가 없으면 우리가 외부 프로그램에 필요한 외부 패키지(설치파일) 을 수동으로 설치해야하는데 bundler 가 존재함에 있어 우리가 해야 할 일을 bundler 가 대신 해주는 역할입니다.
| 특징 | Parcel | Webpack | RollUp |
|---|---|---|---|
| 설정 필요성 | 거의 없음 | 복잡한 설정 필요 | 설정 필요 |
| 빌드 속도 | 빠름 | 보통 | 보통 |
| 기능 | 기본 제공 기능 풍부함 | 다양한 플러그인 | ES6 모듈에 최적화 되어있음 |
| 사용 용도 | 초바자, 간단한 앱 | 복잡한 웹 앱 | 모듈, 라이브러리 |
자세한 설명은 사이트 에 나와있습니다!
package.json 파일 생성 (npm init -y)
bundler 설치 (npm i -D parcel-bundler) // -D : 의존성 파일
package.json 파일 수정
"scripts": {
"dev": "parcel index.html",
"build": "parcel build index.html"
}
$color--black: #000;
$color--white: #fff;
body {
background-color: $color--black;
h1 {
color: $color--white;
}
}
우리는 parcel bundler 를 설치한 이후 부터, 작성한 모든 파일들은 dist 폴더 안으로 내용이 변환되어 들어가집니다. 이 때 주의해야 할 점은 dist 폴더에 우리가 사용할 파일들을 직접적으로 넣으면 안된다는 점입니다.
우리가 만든 파일을 자동으로 dist 폴더에 이동되도록 파일을 설치 해줍니다.
(npm i -D parcel-plugin-static-files-copy)
npm
package.json 파일 수정
},
"staticFiles": {
"staticPath": "static"
}
} // 맨 뒤
postcss autoprefixer ( 모듈 두가지 설치).postcssrc.js// export { plugins: [autoprefixer]} 과 같은 것
module.exports = {
plugins: [
require('autoprefixer') // const 선언 안해주고 바로 쓸 수 있음
]
}
우리는 ESscript 를 현재 최신 버전인 ES6~8 을 사용하고 있는데요, babel 을 통해서 구버전 (ES5) 에서도 사용할 수 있도록 변환시켜주는 역할을 해줍니다.
.babelrc.jsmodule.exports = {
presets: [@babel/preset-env]
}
package.json 파일 수정
.postcssrc.js 를 설치한적이 있다면 이미 browserslist 를 작성해놨을거라서 별로의 수정이 필요하지않고, 설치한적이 없다면 작성해주면 됩니다.
npm i -D @babel/plugin-transform-runtime 설치
기본적으로 babel 은 async (js 문법) 을 지원하지 않기때문에 따로 설치해줘야합니다.
.babelrc.js 파일 수정
module.exports = {
presets: [@babel/preset-env]
plugins: [
['@babel/plugin0transform-runtime']
]
}
main.js 파일 수정async function test() {
const promise = Promis.resolve(123)
console.log(await promise)
}
test() // 123