Skip to content

Configuration

Sangwoo Jeong edited this page Nov 28, 2024 · 1 revision

tidory.config.js

tidory.config.js 은 티도리 ν”„λ ˆμž„μ›Œν¬λ₯Ό μœ„ν•œ μ„€μ •νŒŒμΌμž…λ‹ˆλ‹€. ν…œν”Œλ¦Ώμ—μ„œ μ“°μ΄λŠ” λ³€μˆ˜κ°€ μ•„λ‹Œ, ν”„λ ˆμž„μ›Œν¬μ˜ λ™μž‘λ§Œμ„ μœ„ν•΄ μ‚¬μš©λ˜λŠ” μ„€μ •λ§Œ μ •μ˜λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λΉŒλ“œ 및 배포λ₯Ό μœ„ν•œ ν‹°μŠ€ν† λ¦¬ μ„Έμ…˜ κ°’μ΄λ‚˜ 프리뷰λ₯Ό λ³΄κΈ°μœ„ν•œ λͺ¨λ“œ 등이 ν•΄λ‹Ήλ©λ‹ˆλ‹€.

ν‹°λ„λ¦¬λ‘œ λ§Œλ“  ν”„λ‘œμ νŠΈλ₯Ό μ˜€ν”ˆμ†ŒμŠ€λ‘œ κ³΅κ°œν•  λ•Œ ts_session, url λ“±μ˜ λ―Όκ°ν•œ 정보가 ν¬ν•¨λ˜λ©΄ κ³€λž€ν•œ κ²½μš°κ°€ μžˆμœΌλ―€λ‘œ λ§Œμ•½ tidory.config.js κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우, tidory.config.example.js κ°€ ν¬ν•¨λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ†ŒμŠ€λ₯Ό μ˜€ν”ˆν•˜μ—¬ 배포할 λ•Œμ—λ„ λ―Όκ°ν•œ 정보λ₯Ό λ³΄ν˜Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

module.exports = {
  ts_session: '', // Tistory session cookie value
  url: '', // Tistory blog URL

  /**
   * Preview
   */
  preview: {
    /**
     * Preview Mode
     *
     * index
     * entry
     * category
     * tag
     * guestbook
     */
    mode: 'index',

    /**
     * Home Type
     *
     * NONE
     * COVER
     */
    homeType: 'NONE',

    /**
     * Cover Settings
     */
    coverSettings: [
      {
        description: '',
        index: 0,
        name: 'list',
        title: '',
        dataType: 'RECENT',
        data: {
          category: 'ALL',
          size: '5'
        }
      },
      {
        description: '',
        index: 0,
        name: 'gallery',
        title: '',
        dataType: 'CUSTOM',
        data: {
          title: '',
          summary: '',
          url: 'https://www.tistory.com',
          thumbnail: 'https://www.tistory.com/sample.png'
        }
      },
    ],

    /**
     * Skin Settings
     * 
     * @see https://tistory.github.io/document-tistory-skin/common/index.xml.html
     */ 
    skinSettings: {
      entriesOnPage: "5",
      entriesOnList: "5"
    },

    /**
     * Variables
     */
    variableSettings: {
      tidory: 'a Web Framework for Tistory Skin'
    }
  },

  /**
   * Build
   */
  build: {
    /**
     * Assets public path
     */
    public_path: null
  },

  /**
   * Template aliases
   */
  alias: {
    // as String
    '@styl': 'assets/styl',
    // as Function
    '@md': fn => fn.replace(/^@md/, 'assets/md')
  },

  /**
   * Webpack configuration extends
   * 
   * @param {object} webpackConfig
   */
  extends (webpackConfig) {
    webpackConfig.module.rules = [
      {
        enforce: 'pre',
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'eslint-loader'
      },
      ...webpackConfig.module.rules
    ]
  }
}

ts_session: string

ν‹°μŠ€ν† λ¦¬ μ„Έμ…˜ κ°’μž…λ‹ˆλ‹€. ν‹°μŠ€ν† λ¦¬μ— 둜그인 ν•œ 이후 μΏ ν‚€ μ €μž₯μ†Œμ— 보면 TSSESSION μ΄λΌλŠ” 값이 μžˆλŠ”λ°, 그것을 λ„£μœΌλ©΄ λ©λ‹ˆλ‹€. ν•΄λ‹Ή λ³€μˆ˜λŠ” μ„Έμ…˜ 값이기에 μ ˆλŒ€ μ™ΈλΆ€λ‘œ λ…ΈμΆœλ˜μ–΄μ„œλŠ” μ•ˆ 되며 μŠ€ν‚¨μ„ ν”„λ¦¬λ·°ν•˜κ±°λ‚˜ λΉŒλ“œ 및 λ°°ν¬ν•˜κΈ° μœ„ν•œ μš©λ„λ‘œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.

url: string

ν‹°μŠ€ν† λ¦¬ λΈ”λ‘œκ·Έ μ£Όμ†Œμž…λ‹ˆλ‹€. μ„Έμ…˜κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ ν”„λ¦¬λ·°ν•˜κ±°λ‚˜ λΉŒλ“œ 및 λ°°ν¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. μžμ‹ μ΄ 가지고 μžˆλŠ” λΈ”λ‘œκ·Έμ—¬μ•Ό ν•©λ‹ˆλ‹€.

preview.mode: string

프리뷰 λͺ¨λ“œμž…λ‹ˆλ‹€. 프리뷰 μ„œλ²„λ₯Ό μ‚¬μš©ν•  λ•Œ μ–΄λŠ νŽ˜μ΄μ§€λ₯Ό 프리뷰 ν•  지 μ„€μ •ν•©λ‹ˆλ‹€. ν™ˆ, κΈ€, μΉ΄ν…Œκ³ λ¦¬, νƒœκ·Έ, λ°©λͺ…둝을 프리뷰할 수 μžˆμŠ΅λ‹ˆλ‹€.

preview.homeType: string

ν™ˆ 컀버λ₯Ό 프리뷰할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. NONE 은 μ΅œμ‹  κΈ€, 컀버λ₯Ό κ°œλ°œν•  λ•ŒλŠ” COVER 둜 μ„€μ •ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

preview.coverSettings: array[object]

ν™ˆ 컀버λ₯Ό 프리뷰할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μŠ€ν‚¨ νŽΈμ§‘μ—μ„œ 컀버λ₯Ό μ„ΈνŒ…ν•  ν•„μš” 없이, 컨텐츠, 인덱슀, 제λͺ© 등을 μ§€μ •ν•˜μ—¬ 프리뷰할 수 μžˆμŠ΅λ‹ˆλ‹€. κ³΅μ‹λ¬Έμ„œμ—μ„œ κΈ°λ³Έκ°’ ν•­λͺ©μ„ μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

preview.homeType 이 COVER 둜 μ„€μ •λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

preview.skinSettings: object

μ„€μ • 기본값을 프리뷰할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

preview.variableSettings: object

μŠ€ν‚¨ μ˜΅μ…˜μ„ 프리뷰할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

build.public_path: string

μ»΄ν¬λ„ŒνŠΈ μžμ› 곡개경둜λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. λ·°, λ¦¬μ•‘νŠΈμ™€ 같은 μ»΄ν¬λ„ŒνŠΈμ—μ„œ 같이 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό 톡해 이미지와 같은 λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ ν‹°μŠ€ν† λ¦¬μ— μ˜ν•΄ κ²½λ‘œκ°€ μžλ™μœΌλ‘œ λ³€ν™˜λ˜μ§€ μ•Šμ•„ μ˜¬λ°”λ₯΄κ²Œ λ‘œλ“œλ  수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ public_path λ₯Ό μ„€μ •ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. ν•΄λ‹Ή μ£Όμ†ŒλŠ” λΈ”λ‘œκ·Έλ§ˆλ‹€ λ‹€λ¦…λ‹ˆλ‹€. 곡개 κ²½λ‘œλŠ” λ‹€μŒκ³Ό 같이 μƒκ²ΌμŠ΅λ‹ˆλ‹€.

https://tistory1.daumcdn.net/tistory/2710108/skin/images

곡개 경둜λ₯Ό μ°ΎκΈ°μœ„ν•΄μ„œλŠ”, μ μš©μ‹œν‚€λ €λŠ” ν‹°μŠ€ν† λ¦¬ λΈ”λ‘œκ·Έμ— μ ‘μ†ν•˜μ—¬ λΈŒλΌμš°μ €μ— λ‚΄μž₯된 개발자 도ꡬλ₯Ό μ—΄κ³  직접 경둜λ₯Ό μ•Œμ•„λ‚΄μ•Ό ν•©λ‹ˆλ‹€. script, link 에 μ“°μ—¬μžˆλŠ” λ¦¬μ†ŒμŠ€ 경둜λ₯Ό 주의깊게 μ‚΄νŽ΄λ³΄μ‹­μ‹œμ˜€.

곡개 κ²½λ‘œλŠ” tidory production 을 μ‚¬μš©ν•œ λΉŒλ“œκ³Όμ • 쀑, ts_session 의 μ„€μ • 여뢀에 따라 μžλ™ μ£Όμž…λ©λ‹ˆλ‹€. λ”°λΌμ„œ νŠΉλ³„ν•œ κ²½μš°κ°€ μ•„λ‹ˆλΌλ©΄ 직접 μ„€μ •ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

alias: object

ν…œν”Œλ¦Ώ 별칭을 μ„€μ •ν•©λ‹ˆλ‹€. λ¬Έμžμ—΄λ‘œ 지정을 해쀄 μˆ˜λ„ 있고 ν•¨μˆ˜ν˜•νƒœλ‘œ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜μ˜ νŒŒλΌλ§€ν„°λŠ” ν•΄λ‹Ή 별칭이 μ‚¬μš©λœ μžμ›μ˜ 파일 μ΄λ¦„μž…λ‹ˆλ‹€. ν…œν”Œλ¦Ώμ—μ„œλŠ” λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•˜λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

//- assets/styl/app.styl
include @styl/app.styl

extends(webpackConfig: object)

μ›ΉνŒ© μ„€μ • ν™•μž₯μž…λ‹ˆλ‹€. νŒŒλΌλ§€ν„°λ‘œ μ›ΉνŒ© μ˜€λΈŒμ νŠΈκ°€ λ“€μ–΄κ°€λ©° κΈ°λ³Έ μ›ΉνŒ©μ„€μ • 이외에 μž¬μ •μ˜, μΆ”κ°€ν•˜κ±°λ‚˜ ν™•μž₯ν•΄μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

티도리 ν”„λ ˆμž„μ›Œν¬μ˜ μ›ΉνŒ© 버전은 ν˜„μž¬ Webpack 5 μž…λ‹ˆλ‹€.