Parcel Basic - ChoDragon9/posts GitHub Wiki
Parcel๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก ์ฌ์ฉ๋ฅ ์ด ๋์ webpack๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค. ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด ์ปดํฌ๋ํธ ํ์ฅ์( vue, react ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Parcel๋ฅผ ์ฌ์ฉํ๋ฉด ์ป์ ์ ์๋ ์ฅ์ ์ ์ด๊ธฐ ํ๋ก์ ํธ ์ธํ ๋น์ฉ์ ์ ์ฝํ ์ ์์ผ๋ฉฐ ์์ธํ ๊ฒ์ ์๋์ ๊ฐ๋ค.
- Zero Configuation : ์ค์ ์์ด TypeScript/ES6+/Hot module ์ง์
- Entry ํฌ์ธํธ๋ฅผ HTML๋ก ์ง์ ๊ฐ๋ฅ
- Code Splitting : import() ์ฌ์ฉ์ผ๋ก ์๋์ผ๋ก ์ฝ๋ ๋ถํ ํด์ค
- ํ์ผ๋ช Hash Code : ์บ์ ๋ฐฉ์ง์ ํ์ํ hash code๋ฅผ ์๋์ผ๋ก ํด์ค
- ์ค์น๋์ง ์์ ๋ชจ๋์ ๋ก๋ํ๋ฉด ์๋ฒ๋ฅผ ์ฌ์คํํด์ผ ํจ
- import('./foo')๋ฅผ ํด์ผํ๋ ๋ฐ ์ค์๋ก import('foo')๋ฅผ ํ์๋ค๋ฉด Error ๋ฐ์
$ npm init -y
$ npm install --save-dev parcel-bundler
package.json
"scripts": {
"dev": "parcel index.html", //ํซ ๋ชจ๋
"build": "parcel build index.html" //๋น๋
},
index.html
<html>
<body>
<script src="./index.js"></script>
</body>
</html>
index.js
import foo from './foo'
foo()
foo.js
export default () => {
console.log("Foo")
}
dev
๋ build
๋ฅผ ์คํํ๋ฉด ์ฝ๋๊ฐ ๋์๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
import()
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํ์ผ์ ๋ฒ๋ค๋ง์ ํฌํจํ์ง ์๊ณ ํ์ผ๋ก ๋ง๋ค์ด ์ค๋ค.
Promise๋ฅผ ๋ฆฌํดํ๋ฉฐ ์ฒซ๋ฒ์งธ๋ก ๋ฐ๋ argument๋ exportํ ๊ฒ์ ์ฌ์ฉํ ์ ์๋ค.
import('./foo').then(foo => foo.default())