Untitled

πŸ˜‰ ν—·κ°ˆλ Έλ˜ & λͺ°λžλ˜ λΆ€λΆ„λ“€λ§Œ μ •λ¦¬ν•˜λŠ” λ‚˜λ§Œμ˜ TIL
😯 λͺ¨λ“  κ°•μ˜ λ‚΄μš©μ€ 적지 μ•Šμ•„μš”!

였늘의 μ†Œκ°μ€?
μΈν”„λŸ° κ°•μ˜λ₯Ό 톡해 λ°°μ› λ˜ μ›ΉνŒ©μ„ ν•œλ²ˆ 더 λ‹€λ€„λ³΄λ‹ˆ μ΄μ œλŠ” ν™•μ‹€ν•˜κ²Œ κ°œλ…μ΄ μž‘νžˆλŠ” 것 κ°™μ•„μš”.
κ·Έλž˜λ„ μ˜΅μ…˜ 지정은 아직 λ„ˆλ¬΄ ν—·κ°ˆλ €!




[1] μ»΄ν¬λ„ŒνŠΈ 기초

μ»΄ν¬λ„ŒνŠΈλŠ” μ–΄λ– ν•œ ꡬ쑰적인 λ‹¨μœ„μž…λ‹ˆλ‹€.

μ»΄ν¬λ„ŒνŠΈμ—λŠ” κ°€μž₯ 큰 두 가지 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • μž¬μ‚¬μš©
  • κΈ°λŠ₯ ꡬ쑰화, μΊ‘μŠν™” κ°€λŠ₯


보톡 ν•˜λ‚˜μ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ€‘μ²©λœ μ»΄ν¬λ„ŒνŠΈ 트리둜 κ΅¬μ„±λ˜λ©°

μ»΄ν¬λ„ŒνŠΈ λ“±λ‘μ—λŠ” μ „μ—­κ³Ό 지역 등둝 두 κ°€μ§€λ‘œ λ‚˜λ‰˜μ–΄μ§‘λ‹ˆλ‹€.

μ „μ—­μ μœΌλ‘œ λ“±λ‘λœ μ»΄ν¬λ„ŒνŠΈλŠ” λ‚˜μ€‘μ— μƒμ„±ν•˜λŠ” app μΈμŠ€ν„΄μŠ€μ˜ ν…œν”Œλ¦Ώμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μš°μ„ μ μœΌλ‘œλŠ” 지역 μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜κ³ , 전체 κ΅¬μ—­μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜μ–΄μ•Ό ν•  μ»΄ν¬λ„ŒνŠΈλ“€μ„ μ „μ—­μœΌλ‘œ λ“±λ‘ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.


μ»΄ν¬λ„ŒνŠΈλŠ” 등둝할 μœ„μΉ˜.component('μ»΄ν¬λ„ŒνŠΈμ˜ 이름', μ»΄ν¬λ„ŒνŠΈμ˜ μ˜΅μ…˜) 의 ν˜•νƒœλ‘œ μž‘μ„±λ©λ‹ˆλ‹€.


[2] 유의적 버전

유의적 버전(Semantic Versioning) 즉 μ†Œν”„νŠΈμ›¨μ–΄ λ²„μ „μ΄λž€ 컴퓨터 μ†Œν”„νŠΈμ›¨μ–΄μ˜ νŠΉμ • μ‹œμ μ˜ μƒνƒœμ— λŒ€ν•΄ 식별 κ°€λŠ₯ν•œ μœ μΌν•œ 이름을 μ§€μ •ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.


[2-1] κΈ°λ³Έ ν˜•μ‹

Major.Minor.Patch

각각 주버전, 뢀버전, μˆ˜λ²„μ „μ΄λΌκ³ λ„ λΆˆλ¦½λ‹ˆλ‹€.

  • κΈ°μ‘΄ 버전과 ν˜Έν™˜λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ Major 버전을 μ˜¬λ¦½λ‹ˆλ‹€. (ꡬ 버전을 μ§€μ›ν•˜μ§€ μ•ŠλŠ” μˆ˜μ€€μ˜ λ³€κ²½)
  • μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜λ©΄ Minor 버전을 μ˜¬λ¦½λ‹ˆλ‹€.
  • 버그λ₯Ό κ³ μ³€λ‹€λ©΄ Patch 버전을 μ˜¬λ¦½λ‹ˆλ‹€.


[2-2] - μ‹λ³„μž ν˜•μ‹

Major.Minor.Patch - identifier

이 방식은 pre release 버전을 ν‘œκΈ°ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

identifier은 -둜 μ‹œμž‘ν•˜λ©° .을 κ΅¬λΆ„μžλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.

  • 1.0.0-alpha
  • 1.0.0-x.7.z.92


[2-3] + μ‹λ³„μž ν˜•μ‹

Major.Minor.Patch - identifier + metadata

λΉŒλ“œ 메타데이터λ₯Ό ν‘œκΈ°ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

  • 1.0.0-alpha+001
  • 1.0.0-beta+exp.sha.5114f85


[2-4] κ·œμ•½

  • 졜초 개발 버전은 0.1.0으둜 ν•©λ‹ˆλ‹€.
  • 자릿수λ₯Ό λ§žμΆ”κΈ° μœ„ν•΄ 0으둜 μ‹œμž‘ν•˜λŠ” μˆ«μžλŠ” 쓰지 μ•ŠμŠ΅λ‹ˆλ‹€. (ex) 1.07.1)
  • λΆ€λͺ¨ 버전이 였λ₯΄λ©΄ μžμ‹ 버전은 0으둜 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.




[3] SFC

.vue ν™•μž₯자λ₯Ό 가진 single file component을 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” Webpack, Parcel, Browserify λ“±μ˜ λΉŒλ“œ 도ꡬ(λ²ˆλ“€λŸ¬)λ₯Ό μ΄μš©ν•΄ λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜κ²Œλ” λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.


SFCλŠ” 보톡 3가지 ꡬ쑰λ₯Ό κ°€μ§‘λ‹ˆλ‹€.


<template>
  <h1>{{ msg }}</h1>
</template>

<script>
  export default {
    data() {
      return {
        msg: "Hello Vue~",
      };
    },
  };
</script>

<style lang="scss">
  h1 {
    color: orange;
  }
</style>

μ΄λŸ¬ν•œ 3가지 ν˜•νƒœλ₯Ό 가진 ν•˜λ‚˜μ˜ SFCλ₯Ό λͺ¨λ“ˆ ν˜•νƒœλ‘œ κ°€μ Έμ˜€κ³ , 내보내며 ν™•μž₯적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


[3-1] λ²ˆλ“€λŸ¬

λ²ˆλ“€λŸ¬λŠ” μ–΄λ– ν•œ 것듀을 λ¬Άμ–΄λ‚Έλ‹€λŠ” 의미λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

이와 같은 λ²ˆλ“€λŸ¬λŠ” λΈŒλΌμš°μ €μ—μ„œ 해석할 수 μ—†λŠ” vue, react λ“±μ˜ νŒŒμΌλ“€μ„

λΈŒλΌμš°μ €μ—μ„œ 해석할 수 μžˆλŠ” ν˜•νƒœλ‘œ λ¬Άμ–΄ μž¬μƒμ„±ν•΄μ€λ‹ˆλ‹€.


[1] Parcel

parcel은 λ²ˆλ“€λŸ¬μ˜ μ—¬λŸ¬ μ˜΅μ…˜λ“€μ„ μ„ΈλΆ€μ μœΌλ‘œ 지정할 μˆ˜λŠ” μ—†μ§€λ§Œ, νŽΈλ¦¬ν•©λ‹ˆλ‹€.

규λͺ¨κ°€ 크지 μ•Šμ€ ν”„λ‘œμ νŠΈμ—μ„œ 잘 μ‚¬μš©λ©λ‹ˆλ‹€.


parcel은 ν•΄λ‹Ή λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

npm i -D parcel (개발 λͺ¨λ“œμ—μ„œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€.)
"scripts": {
  "dev": "parcel src/index.html"
},

μ§„μž…μ μ„ ν•¨κ»˜ μ§€μ •ν•΄μ€λ‹ˆλ‹€.


parcel의 λ²ˆλ“€λŸ¬ κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ λ‹€μŒ μ»€μŠ€ν…€ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

npm run dev


μ£Όμ˜ν•  점은 parcel은 μš°λ¦¬κ°€ ν•„μš”ν•œ λͺ¨λ“  νŒ¨ν‚€μ§€λ“€μ„ μžλ™μœΌλ‘œ μ„€μΉ˜ν•΄μ£ΌλŠ” 것이 μ•„λ‹™λ‹ˆλ‹€.

λ”°λΌμ„œ sass와 같은 λ³„λ„μ˜ μ‚¬μš©ν•  νŒ¨ν‚€μ§€λŠ” λ”°λ‘œ μ„€μΉ˜ν•΄μ€˜μ•Ό ν•©λ‹ˆλ‹€.


[2] Webpack

webpack은 λ²ˆλ“€λŸ¬μ˜ μ—¬λŸ¬ λ²ˆλ“€ μ˜΅μ…˜λ“€μ„ μ„ΈλΆ€μ μœΌλ‘œ 지정해쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ parcel보닀 훨씬 λ‹€μ–‘ν•œ μ˜΅μ…˜λ“€μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.


webpack은 λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

npm i -D webpack webpack-cli // webpack의 터미널도 ν•¨κ»˜ μ„€μΉ˜ν•©λ‹ˆλ‹€.
"scripts": {
  "build": "webpack"
},


Webpack은 webpack.config.js νŒŒμΌμ„ μ‚¬μš©ν•΄μ„œ μ—¬λŸ¬ μ˜΅μ…˜μ„ 지정해쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

const path = require("path");
const { VueLoaderPlugin } = require("vue-loader");
const HtmlPlugin = require("html-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");

module.exports = {
  resolve: {
    extensions: [".vue", ".js"],
    alias: {
      "~": path.resolve(__dirname, "src"),
    },
  },
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    clean: true,
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        use: "vue-loader",
      },
      {
        test: /\.s?css$/,
        use: ["vue-style-loader", "css-loader", "sass-loader"],
      },
    ],
  },
  plugins: [
    new VueLoaderPlugin(),
    new HtmlPlugin({
      template: "./src/index.html",
    }),
    new CopyPlugin({
      patterns: [{ from: "static" }],
    }),
  ],
};

정말 λ§Žμ€ μ˜΅μ…˜μ„ 지정해야함을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

webpack λ˜ν•œ λ³„λ„μ˜ μ‚¬μš©ν•  νŒ¨ν‚€μ§€λŠ” μ „λΆ€ μ„€μΉ˜ν•΄μ€€ ν›„, wepack.config.js νŒŒμΌμ— λ“±λ‘ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.





좜처

https://semver.org/

https://johngrib.github.io/wiki/semantic-versioning/

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

Vue.js3 Document

μΉ΄ν…Œκ³ λ¦¬: ,

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°