This page covers Elm 0.18

Webpack

Elm reactor 는 간단한 앱을 만들어 보기에는 적합하지만, 더 복잡한 앱을 위해서는 부족합니다. 현재, reactor 는 외부 자바스크립트와 연동하거나 외부 CSS 를 불러오는 기능을 지원하지 않습니다. 대신 여기서는 Webpack 을 사용해 Elm 코드를 구동하는 방식으로 해결합니다.

Webpack 은 코드 번들러입니다. 코드의 의존관계를 살펴서 사용되는 부분만 묶습니다. Webpack 은 CSS 같은 리소스도 번들에 포함할 수 있습니다. Webpack 에 대해서는 여기 를 참조하세요.

Webpack 과 같은 일을 하는 도구로 다음과 같은 것들도 있습니다:

  • Browserify
  • Gulp
  • StealJS
  • JSPM
  • 또는 Rails 나 Phoenix 프레임워크의 경우 자체적인 Elm + CSS 의 번들링 지원

필요한 것

이 라이브러리들을 구동하는 데는 Node JS 4 이상의 버전이 필요합니다.

Webpack 과 로더 (loaders) 설치

Webpack 과 관련 패키지를 설치합니다:

npm i webpack@1 webpack-dev-middleware@1 webpack-dev-server@1 elm-webpack-loader@4 file-loader@0 style-loader@0 css-loader@0 url-loader@0 -S

여기서는 webpack 버전 1.13elm-webpack-loader 버전 4.1 을 사용하겠습니다.

로더는 Webpack 이 다양한 포맷을 읽을 수 있게 해주는 일종의 확장입니다. (예: css-loader 는 .css 파일을 읽어들임)

몇가지 추가적인 라이브러리도 사용하겠습니다:

  • CSS 를 위한 Basscss, ace-css npm 패키지에 일반적인 Basscss 스타일이 포함되어 있습니다.
  • 아이콘을 위한 FontAwesome
npm i ace-css@1 font-awesome@4 -S

Webpack 설정

루트에 webpack.config.js 를 추가합니다:

var path = require("path");

module.exports = {
  entry: {
    app: [
      './src/index.js'
    ]
  },

  output: {
    path: path.resolve(__dirname + '/dist'),
    filename: '[name].js',
  },

  module: {
    loaders: [
      {
        test: /\.(css|scss)$/,
        loaders: [
          'style-loader',
          'css-loader',
        ]
      },
      {
        test:    /\.html$/,
        exclude: /node_modules/,
        loader:  'file?name=[name].[ext]',
      },
      {
        test:    /\.elm$/,
        exclude: [/elm-stuff/, /node_modules/],
        loader:  'elm-webpack?verbose=true&warn=true',
      },
      {
        test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        loader: 'url-loader?limit=10000&mimetype=application/font-woff',
      },
      {
        test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        loader: 'file-loader',
      },
    ],

    noParse: /\.elm$/,
  },

  devServer: {
    inline: true,
    stats: { colors: true },
  },

};

알아둘 것:

  • devServer 키에는 Webpack dev 서버에 대한 내용이 있습니다. 이것이 Elm reactor 를 대신합니다.
  • entry 키의 ./src/index.js 는 이 어플리케이션의 시작점입니다.

results matching ""

    No results matching ""