๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ
                                            
                                                
                                                
                                                
                                                
                                                
                                                 11692 ๋จ์ด  typescriptdevopswebdevjavascript
                    
๐๐ป ์๊ฐํ๋ค. 
Pixuim์์ ์ฐ๋ฆฌ๋ ๊ฐ์ข
 ์ฌ์ดํธ๋ฅผ ์ํด ์น ํจํค์ง๋ฅผ ๋ง๋๋ ๊ฒ์ ์์ฃผ ๋ฐ๊ฒฌํ๋ค.
์ด๊ฒ์ script ํ๊ทธ๋ฅผ ํตํด ํตํฉํ ๋ค์ ์ฝ๋์ ์ฌ์ฉํ  ์ ์๋ ๊ฐ๋จํ ํจํค์ง๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด:
<script src="https://mycdn.a/latest/bundle.js"></script>
<script>
    pixiumPackage.helloWorld()
</script>
์ด ํจํค์ง๋ฅผ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ๋ชจ๋  package.json ์คํฌ๋ฆฝํธ์ ์ ๋ณด๋ฅผ ๋ค์ ๋ง๋๋ ๊ฒ์ ์์ฃผ ๋ฐ๊ฒฌํ๋ค.๋ฐ๋ผ์ ์ฝ๊ฒ ์ค์ ํ  ์ ์๋ ํ
ํ๋ฆฟ์ ๋ง๋ค๊ธฐ๋ก ํ์ต๋๋ค.
์ด ๊ธ์์ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ  ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์ด ์ํผ ํ
ํ๋ฆฟ์ ๋ง๋ค์๋์ง ๋ณผ ๊ฒ์ด๋ค!
 
 
๐ง ์ฌ์ฉ๋ ๋๊ตฌ 
๋ค์์ ์ฌ์ฉํ ๋๊ตฌ์ ๋น ๋ฅธ ๋ชฉ๋ก๊ณผ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๋น ๋ฅธ ์ค๋ช
์
๋๋ค
๊ณต๊ตฌ.
๋ฌ์ฌ
์ฌ์ 
ํจํค์ง ์ค์น ์ฒ๋ฆฌ
Npm
๊ฐ๋ฐฉ์ npm ๋ฑ๋กํ์ ๋ฐํ
ํ์ ์๊ณ 
๊ฐ๋ ฅํ ์ ํ JavaScript
์น ํจํค์ง
typescript๋ฅผ ๋จ์ผ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ๋ค
๋์ด ์์ด๋ค
ํ
์คํธ๋ฅผ ์ํด ํซ ๋ชจ๋ ๋ค์ ๋ก๋
๋์์
๋์์ ์ฌ๋ฌ ๋ช
๋ น ์คํ
๐๏ธ ๊ด๋ฆฌ ๊ตฌ์กฐ 
ํ์ฌ ํ๋ก์ ํธ์ ํด๋์ ํ์ผ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค
 
 
webpack-demo/
โโโ README.md
โโโ dist
โโโโโ...
โโโ node_modules
โโโโโ...
โโโ package.json
โโโ snowpack.config.js
โโโ src
โโโโโ...
โโโ test
โโโโโ...
โโโ tsconfig.json
โโโ webpack.config.js
โโโ yarn.lock
๋ณด์๋ค์ํผ ํ๋ก์ ํธ์๋ 4๊ฐ์ ์ฃผ์ ํด๋๊ฐ ์์ต๋๋ค.
ํด๋
์ฌ์ฉ
๊ฑฐ๋ฆฌ
์ปดํ์ผ๋ ์ค๋น ๊ฒ์ ํจํค์ง ํฌํจ
๋
ธ๋ ๋จ์
ํ๋ก์ ํธ์ ํ์ํ ๋ชจ๋  npm ํจํค์ง
src
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ณธ ํ์ผ
ํ
์คํธ
ํจํค์ง๋ฅผ ์ธ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ํ
์คํธํ๋ ์ธ๋ฑ์ค ํ์ผ
๐ธ ์น ํจํค์ง 
์ด ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ webpack์ ts-loader๋ฅผ ์ฌ์ฉํ๋ค.Webpack๋ ๋ธ๋ผ์ฐ์ ์ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ ๋ชจ๋  ๋ด์ฉ์ ์ฌ์ฉ๋๋ฉฐ ts-loader ํ์ํ typescript๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์น ํจํค์ง ์ค์ ์ ๋ํด output:library ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์น ํจํค์ง.๋ฐฐ์นํ๋ค.js
const path = require('path');
module.exports = {
    entry: './src/index.ts',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        // Define the package name
        library: 'pixiumPackage',
        libraryTarget: 'umd',
        globalObject: 'this',
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
    },
};
์ฆ, ๋ค์๊ณผ ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ก์ธ์คํ  ์ ์์ต๋๋ค.
<script>
    pixiumPackage.myFunctionName()
    pixiumPackage.myClassName()
</script>
โ๏ธ๏ธ ๋์ด ์์ด๋ค 
Snowpack๋ ์ต๊ทผ์ Pixium์์ ๋ฐ๊ฒฌํ ํ๋ฅญํ ๋๊ตฌ์
๋๋ค.์ด๊ฒ์ ํ๋์ ์ ๋จ ๊ตฌ์ถ ๋๊ตฌ๋ก ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค!
 
 
์ด ํ๋ก์ ํธ์์ ์ค๋
ธ์ฐํฉ์ ์ฌ์ฉ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.ํ
์คํธ ํ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ์๊ฐํํ์ฌ ๋ณ๊ฒฝํฉ๋๋ค.์ด๊ฒ์ ์ด ๋ชจ๋ ๊ต์ฒด๋ฅผ ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ์น ํจํค์ง๊ฐ ๋ณ๊ฒฝ๋  ๋๋ง๋ค ์ ํจํค์ง๋ฅผ ๋ค์ ์ปดํ์ผํ๊ณ  ํ
์คํธ ํ๊ฒฝ์ด ๋ค์ ๋ถ๋ฌ์จ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
 
 
์ ์ค๋ฐฐ์นํ๋ค.js
/** @type {import("snowpack").SnowpackUserConfig } */
module.exports = {
    mount: {
        test: '/',
        dist: '/dist',
    },
    plugins: ['@snowpack/plugin-typescript'],
    install: [
        /* ... */
    ],
    installOptions: {
        installTypes: true,
    },
};
์ฌ๊ธฐmount ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
<script src="https://mycdn.a/latest/bundle.js"></script>
<script>
    pixiumPackage.helloWorld()
</script>
๋ค์์ ์ฌ์ฉํ ๋๊ตฌ์ ๋น ๋ฅธ ๋ชฉ๋ก๊ณผ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๋น ๋ฅธ ์ค๋ช ์ ๋๋ค
๊ณต๊ตฌ.
๋ฌ์ฌ
์ฌ์
ํจํค์ง ์ค์น ์ฒ๋ฆฌ
Npm
๊ฐ๋ฐฉ์ npm ๋ฑ๋กํ์ ๋ฐํ
ํ์ ์๊ณ
๊ฐ๋ ฅํ ์ ํ JavaScript
์น ํจํค์ง
typescript๋ฅผ ๋จ์ผ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ๋ค
๋์ด ์์ด๋ค
ํ ์คํธ๋ฅผ ์ํด ํซ ๋ชจ๋ ๋ค์ ๋ก๋
๋์์
๋์์ ์ฌ๋ฌ ๋ช ๋ น ์คํ
๐๏ธ ๊ด๋ฆฌ ๊ตฌ์กฐ 
ํ์ฌ ํ๋ก์ ํธ์ ํด๋์ ํ์ผ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค
 
 
webpack-demo/
โโโ README.md
โโโ dist
โโโโโ...
โโโ node_modules
โโโโโ...
โโโ package.json
โโโ snowpack.config.js
โโโ src
โโโโโ...
โโโ test
โโโโโ...
โโโ tsconfig.json
โโโ webpack.config.js
โโโ yarn.lock
๋ณด์๋ค์ํผ ํ๋ก์ ํธ์๋ 4๊ฐ์ ์ฃผ์ ํด๋๊ฐ ์์ต๋๋ค.
ํด๋
์ฌ์ฉ
๊ฑฐ๋ฆฌ
์ปดํ์ผ๋ ์ค๋น ๊ฒ์ ํจํค์ง ํฌํจ
๋
ธ๋ ๋จ์
ํ๋ก์ ํธ์ ํ์ํ ๋ชจ๋  npm ํจํค์ง
src
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ณธ ํ์ผ
ํ
์คํธ
ํจํค์ง๋ฅผ ์ธ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ํ
์คํธํ๋ ์ธ๋ฑ์ค ํ์ผ
๐ธ ์น ํจํค์ง 
์ด ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ webpack์ ts-loader๋ฅผ ์ฌ์ฉํ๋ค.Webpack๋ ๋ธ๋ผ์ฐ์ ์ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ ๋ชจ๋  ๋ด์ฉ์ ์ฌ์ฉ๋๋ฉฐ ts-loader ํ์ํ typescript๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์น ํจํค์ง ์ค์ ์ ๋ํด output:library ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์น ํจํค์ง.๋ฐฐ์นํ๋ค.js
const path = require('path');
module.exports = {
    entry: './src/index.ts',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        // Define the package name
        library: 'pixiumPackage',
        libraryTarget: 'umd',
        globalObject: 'this',
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
    },
};
์ฆ, ๋ค์๊ณผ ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ก์ธ์คํ  ์ ์์ต๋๋ค.
<script>
    pixiumPackage.myFunctionName()
    pixiumPackage.myClassName()
</script>
โ๏ธ๏ธ ๋์ด ์์ด๋ค 
Snowpack๋ ์ต๊ทผ์ Pixium์์ ๋ฐ๊ฒฌํ ํ๋ฅญํ ๋๊ตฌ์
๋๋ค.์ด๊ฒ์ ํ๋์ ์ ๋จ ๊ตฌ์ถ ๋๊ตฌ๋ก ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค!
 
 
์ด ํ๋ก์ ํธ์์ ์ค๋
ธ์ฐํฉ์ ์ฌ์ฉ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.ํ
์คํธ ํ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ์๊ฐํํ์ฌ ๋ณ๊ฒฝํฉ๋๋ค.์ด๊ฒ์ ์ด ๋ชจ๋ ๊ต์ฒด๋ฅผ ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ์น ํจํค์ง๊ฐ ๋ณ๊ฒฝ๋  ๋๋ง๋ค ์ ํจํค์ง๋ฅผ ๋ค์ ์ปดํ์ผํ๊ณ  ํ
์คํธ ํ๊ฒฝ์ด ๋ค์ ๋ถ๋ฌ์จ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
 
 
์ ์ค๋ฐฐ์นํ๋ค.js
/** @type {import("snowpack").SnowpackUserConfig } */
module.exports = {
    mount: {
        test: '/',
        dist: '/dist',
    },
    plugins: ['@snowpack/plugin-typescript'],
    install: [
        /* ... */
    ],
    installOptions: {
        installTypes: true,
    },
};
์ฌ๊ธฐmount ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
webpack-demo/
โโโ README.md
โโโ dist
โโโโโ...
โโโ node_modules
โโโโโ...
โโโ package.json
โโโ snowpack.config.js
โโโ src
โโโโโ...
โโโ test
โโโโโ...
โโโ tsconfig.json
โโโ webpack.config.js
โโโ yarn.lock
์ด ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ webpack์ ts-loader๋ฅผ ์ฌ์ฉํ๋ค.
Webpack๋ ๋ธ๋ผ์ฐ์ ์ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ ๋ชจ๋  ๋ด์ฉ์ ์ฌ์ฉ๋๋ฉฐ ts-loader ํ์ํ typescript๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.์น ํจํค์ง ์ค์ ์ ๋ํด
output:library ์์ฑ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.์น ํจํค์ง.๋ฐฐ์นํ๋ค.js
const path = require('path');
module.exports = {
    entry: './src/index.ts',
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        // Define the package name
        library: 'pixiumPackage',
        libraryTarget: 'umd',
        globalObject: 'this',
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist'),
    },
};
<script>
    pixiumPackage.myFunctionName()
    pixiumPackage.myClassName()
</script>
โ๏ธ๏ธ ๋์ด ์์ด๋ค 
Snowpack๋ ์ต๊ทผ์ Pixium์์ ๋ฐ๊ฒฌํ ํ๋ฅญํ ๋๊ตฌ์
๋๋ค.์ด๊ฒ์ ํ๋์ ์ ๋จ ๊ตฌ์ถ ๋๊ตฌ๋ก ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค!
 
 
์ด ํ๋ก์ ํธ์์ ์ค๋
ธ์ฐํฉ์ ์ฌ์ฉ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.ํ
์คํธ ํ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ์๊ฐํํ์ฌ ๋ณ๊ฒฝํฉ๋๋ค.์ด๊ฒ์ ์ด ๋ชจ๋ ๊ต์ฒด๋ฅผ ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ์น ํจํค์ง๊ฐ ๋ณ๊ฒฝ๋  ๋๋ง๋ค ์ ํจํค์ง๋ฅผ ๋ค์ ์ปดํ์ผํ๊ณ  ํ
์คํธ ํ๊ฒฝ์ด ๋ค์ ๋ถ๋ฌ์จ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
 
 
์ ์ค๋ฐฐ์นํ๋ค.js
/** @type {import("snowpack").SnowpackUserConfig } */
module.exports = {
    mount: {
        test: '/',
        dist: '/dist',
    },
    plugins: ['@snowpack/plugin-typescript'],
    install: [
        /* ... */
    ],
    installOptions: {
        installTypes: true,
    },
};
์ฌ๊ธฐmount ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
/** @type {import("snowpack").SnowpackUserConfig } */
module.exports = {
    mount: {
        test: '/',
        dist: '/dist',
    },
    plugins: ['@snowpack/plugin-typescript'],
    install: [
        /* ... */
    ],
    installOptions: {
        installTypes: true,
    },
};
test: '/',๋ ํ
์คํธ ํด๋๋ฅผ ์น์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ก ๋ง์ดํธํ  ๊ฒ์์ ๋ํ๋
๋๋คdist: '/dist'๋ ๋์ค์ผ ํด๋๋ฅผ /dist์ ๋ถ๋ฌ์ฌ ๊ฒ์ด๋ผ๊ณ  ๋ฐํ๋ค.์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋์คํธ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒญํ  ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด <script src="./dist/bundle.js"></script>๐ป ์ ํฌ ์ฝ๋ ๊ณต๊ฐํ๊ฒ ์ต๋๋ค. 
์ด์  ์ฝ๋์ ์์, ํจ์, ํด๋์ค๋ฅผ ์ด๋ป๊ฒ ๊ณต๊ฐํ๋์ง ์ดํด๋ด
์๋ค.
 
 
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ทผ ์ฝ๋๋ฅผ ํต๊ณผํ๋ ค๋ฉด export ๋ฐฉ๋ฒ๋ง ์ฌ์ฉํ์ญ์์ค.์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
/**
 * Say hello world in the console
 */
export const PixiumHello = () => {
    console.log(`hello world`)
}
์ฐ๋ฆฌ๋ ์๋์ ๋ฐฉ์์ผ๋ก ๊ทธ๊ฒ์ ํธ์นญํ  ์ ์๋ค.
<script>
pixiumPackage.PixiumHello()
</script>
๋ํ ํด๋์ ๊ธฐ๋ฅ์ ํตํด DOM์ ์์ฝ๊ฒ ์ํธ ์์ฉํ  ์ ์์ต๋๋ค.
// Set the inner text
document.getElementById("pixiumBanner").innerText = "Pixium Digital Pte Ltd";
๐ ๊ฒฐ๋ก  
์ฐ๋ฆฌ๋ ํ
์คํธ์ ํธ๋ฆฌํ๋๋ก ์์ฃผ ๊ฐ๋จํ typescript ๊ท์๊ณผ HMR ์์คํ
์ ๊ฐ์ง๊ณ  ์๋ค.
ํจ์น, ๋ถ์ฐจ์ ์ธ ํ๋ก๊ทธ๋จ, ์ฃผ์ ํ๋ก๊ทธ๋จ์ npm๋ก ์ฝ๊ฒ ์ ์กํ  ์ ์๋ ๋ช ๊ฐ์ง ๋ช
๋ น ๋จ์ถ ๋ฐฉ์์ด ์๋ค.
์ด ๋ชจ๋  ๊ฒ์ CDN์ ๋ํ๋ฉด, ๋๋ ๋์ ์๋ถ๋ถ์ ๋๋ผ์ด ๋น ๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ป์ ์ ์๋ค.
์ ๋ฉด ํ๋งค
์คํจ ๋์งํธ
/  
typescript ํจํค์ง ํ
ํ๋ฆฟ
 
typescript ์ง์ ์น ํจํค์ง
 
Typescript ํจํค์ง ํ
ํ๋ฆฟ 
์ด ํ
ํ๋ฆฟ ํ์ผ์์ ์น์ ์ํ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ typescript ํจํค์ง๋ฅผ ๊ฐ๋จํ๊ฒ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์น ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐฉ์ ๊ณต๊ฐํฉ๋๋ค.
์ฅ์น 
๋ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ dev ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.yarn
๋ฐ์ ์ํค๋ค yarn start
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ปดํ์ผํ๊ธฐ ์ํด ์น ํจํค์ง๋ฅผ ์์ํฉ๋๋ค.
๋ํ snowpack์ ์์ํ์ฌ ์์ธ์ ์
๋ฐ์ดํธํฉ๋๋ค.์น ํจํค์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปดํ์ผ๋๋ฉด html์ด ํ
์คํธ๋ฉ๋๋ค
์ง๋ค yarn build
ํจํค์ง ๊ฒ์ 
npm cli์ ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ ๋จผ์  ๋ก๊ทธ์ธํ์ญ์์ค.npm login
package.json์์ ๋ค์ ์ค์ ์ญ์ ํด์ผ ํฉ๋๋ค.private: true,
ํจ์น ๊ฒ์yarn patch
๋ฏธ์ฑ๋
์ ๋
ผ๋ฌธ์ ๋ฐํํ๋คyarn minor
๋ฐํ ์ ๋ฌธyarn major
View on GitHub 
PixUIM Digital - ๊ธฐ์  ๋ฐ ํ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ญ์์ค.
https://pixiumdigital.com 
https://github.com/pixiumdigital
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            ์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ  ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
                                
                                https://dev.to/pixiumdigital/build-a-web-package-with-typescript-3844
                            
                            
                            
                                ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ  ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
                            
                            
                                
                                
                                 ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
/**
 * Say hello world in the console
 */
export const PixiumHello = () => {
    console.log(`hello world`)
}
<script>
pixiumPackage.PixiumHello()
</script>
// Set the inner text
document.getElementById("pixiumBanner").innerText = "Pixium Digital Pte Ltd";
์ฐ๋ฆฌ๋ ํ ์คํธ์ ํธ๋ฆฌํ๋๋ก ์์ฃผ ๊ฐ๋จํ typescript ๊ท์๊ณผ HMR ์์คํ ์ ๊ฐ์ง๊ณ ์๋ค.
ํจ์น, ๋ถ์ฐจ์ ์ธ ํ๋ก๊ทธ๋จ, ์ฃผ์ ํ๋ก๊ทธ๋จ์ npm๋ก ์ฝ๊ฒ ์ ์กํ ์ ์๋ ๋ช ๊ฐ์ง ๋ช ๋ น ๋จ์ถ ๋ฐฉ์์ด ์๋ค.
์ด ๋ชจ๋ ๊ฒ์ CDN์ ๋ํ๋ฉด, ๋๋ ๋์ ์๋ถ๋ถ์ ๋๋ผ์ด ๋น ๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ป์ ์ ์๋ค.
์ ๋ฉด ํ๋งค
์คํจ ๋์งํธ / typescript ํจํค์ง ํ ํ๋ฆฟ
typescript ์ง์ ์น ํจํค์ง
Typescript ํจํค์ง ํ
ํ๋ฆฟ 
์ด ํ
ํ๋ฆฟ ํ์ผ์์ ์น์ ์ํ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ typescript ํจํค์ง๋ฅผ ๊ฐ๋จํ๊ฒ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์น ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐฉ์ ๊ณต๊ฐํฉ๋๋ค.
์ฅ์น 
๋ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ dev ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.yarn
๋ฐ์ ์ํค๋ค yarn start
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ปดํ์ผํ๊ธฐ ์ํด ์น ํจํค์ง๋ฅผ ์์ํฉ๋๋ค.
๋ํ snowpack์ ์์ํ์ฌ ์์ธ์ ์
๋ฐ์ดํธํฉ๋๋ค.์น ํจํค์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปดํ์ผ๋๋ฉด html์ด ํ
์คํธ๋ฉ๋๋ค
์ง๋ค yarn build
ํจํค์ง ๊ฒ์ 
npm cli์ ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ ๋จผ์  ๋ก๊ทธ์ธํ์ญ์์ค.npm login
package.json์์ ๋ค์ ์ค์ ์ญ์ ํด์ผ ํฉ๋๋ค.private: true,
ํจ์น ๊ฒ์yarn patch
๋ฏธ์ฑ๋
์ ๋
ผ๋ฌธ์ ๋ฐํํ๋คyarn minor
๋ฐํ ์ ๋ฌธyarn major
View on GitHub 
PixUIM Digital - ๊ธฐ์  ๋ฐ ํ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ญ์์ค.
https://pixiumdigital.com 
https://github.com/pixiumdigital
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            ์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ  ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
                                
                                https://dev.to/pixiumdigital/build-a-web-package-with-typescript-3844
                            
                            
                            
                                ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ  ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
                            
                            
                                
                                
                                 ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
๋ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ dev ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
yarn
๋ฐ์ ์ํค๋ค yarn start
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ปดํ์ผํ๊ธฐ ์ํด ์น ํจํค์ง๋ฅผ ์์ํฉ๋๋ค.
๋ํ snowpack์ ์์ํ์ฌ ์์ธ์ ์
๋ฐ์ดํธํฉ๋๋ค.์น ํจํค์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปดํ์ผ๋๋ฉด html์ด ํ
์คํธ๋ฉ๋๋ค
์ง๋ค yarn build
ํจํค์ง ๊ฒ์ 
npm cli์ ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ ๋จผ์  ๋ก๊ทธ์ธํ์ญ์์ค.npm login
package.json์์ ๋ค์ ์ค์ ์ญ์ ํด์ผ ํฉ๋๋ค.private: true,
ํจ์น ๊ฒ์yarn patch
๋ฏธ์ฑ๋
์ ๋
ผ๋ฌธ์ ๋ฐํํ๋คyarn minor
๋ฐํ ์ ๋ฌธyarn major
View on GitHub 
PixUIM Digital - ๊ธฐ์  ๋ฐ ํ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ญ์์ค.
https://pixiumdigital.com 
https://github.com/pixiumdigital
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            ์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ  ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
                                
                                https://dev.to/pixiumdigital/build-a-web-package-with-typescript-3844
                            
                            
                            
                                ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ  ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
                            
                            
                                
                                
                                 ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
yarn start
yarn build
ํจํค์ง ๊ฒ์ 
npm cli์ ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ ๋จผ์  ๋ก๊ทธ์ธํ์ญ์์ค.npm login
package.json์์ ๋ค์ ์ค์ ์ญ์ ํด์ผ ํฉ๋๋ค.private: true,
ํจ์น ๊ฒ์yarn patch
๋ฏธ์ฑ๋
์ ๋
ผ๋ฌธ์ ๋ฐํํ๋คyarn minor
๋ฐํ ์ ๋ฌธyarn major
View on GitHub 
PixUIM Digital - ๊ธฐ์  ๋ฐ ํ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ญ์์ค.
https://pixiumdigital.com 
https://github.com/pixiumdigital
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            ์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ  ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
                                
                                https://dev.to/pixiumdigital/build-a-web-package-with-typescript-3844
                            
                            
                            
                                ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ  ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
                            
                            
                                
                                
                                 ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
npm login
private: true,
yarn patch
yarn minor
yarn major
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ typescript๋ก ์น ํจํค์ง๋ฅผ ๋ง๋ญ๋๋ค!๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/pixiumdigital/build-a-web-package-with-typescript-3844ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
                                
                                
                                
                                
                                
                                ์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ  ๋ฐ๊ฒฌ์ ์ ๋
                                (Collection and Share based on the CC Protocol.)
                            
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค