Pixi.js: (v4) Webpack ์‚ฌ์šฉ ์‹œ GLSLify ์˜ค๋ฅ˜

์— ๋งŒ๋“  2016๋…„ 09์›” 06์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js

Webpack๊ณผ ๋ฒˆ๋“ค๋กœ ๋ฌถ์€ ํ›„ ๋‚ด Pixi ์•ฑ์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

browser.js:2 Uncaught Error: It appears that you're using glslify in browserify without its transform applied. Make sure that you've set up glslify as a source transform

์ผ๋ถ€ ์—ฐ๊ตฌ์—์„œ๋Š” ์ด๊ฒƒ์ด Webpack ์‚ฌ์šฉ์ž ์‚ฌ์ด์—์„œ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ผ๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. https://gist.github.com/mjackson/ecd3914ebee934f4daf4#gistcomment -1842689

์ด ์†”๋ฃจ์…˜์€ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์•„์ง ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›นํŒฉ ์•ฑ์—์„œ Pixi๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ณตํ†ต ์ง€์นจ์„ ๋งˆ๋ จํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ ์›นํŒฉ ์•ฑ์„ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

var PIXI = require('pixi.js');
var renderer = new PIXI.WebGLRenderer(256, 256);

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@endel @xTiming ์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„. ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

webpack.config.js

module: {
        loaders: [
            ...
            { test: path.resolve(__dirname, 'node_modules', 'pixi.js'), loader: 'ify' },
            ...
        ]
    },

์ฐฝ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋Š” ์ž…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์˜ osx์™€ ๋‹ฌ๋ฆฌ.

image

window10์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image
image

๋ชจ๋“  22 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @Adam-Meisen์ž…๋‹ˆ๋‹ค! ์ด ๋ฌธ์ œ๊ฐ€ ์ง€๊ธˆ ๋ช‡ ๋ฒˆ ๋‚˜ํƒ€๋‚ฌ๊ณ  ์ตœ๊ทผ์— ์ง์ ‘ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ณ ์น  ๋•Œ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์•„์š” ๐Ÿ’ƒ

glsify๋ฅผ ์›์‹œ ํ…์ŠคํŠธ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๋‹น์‹ ์˜ ์ƒ๊ฐ์— ๋„์›€์ด ๋ ๊นŒ์š”? ์šฐ๋ฆฌ๋Š” ์•„์ง glslify์— ํŠน์ •ํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ ํ™˜์˜! ๐Ÿ‘

๋ฐฉ๊ธˆ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— gslify๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ๊ฒ€์ƒ‰์—์„œ๋Š” ๋งŽ์€ ์ž ์žฌ์  ์›์ธ์ด ์žˆ๋Š” ๋งค์šฐ ๋ชจํ˜ธํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ๊ฒƒ์ด ์•„๋งˆ ํšจ๊ณผ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ด ๋ฌธ์ œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์™„์ „ํžˆ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ify-loader, browserify-versionify ๋ฐ glslify๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ cdn ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •ํ•˜๋ ค๋ฉด +1, ์ง€๊ธˆ์€ ์‚ฌ์ „ ๋นŒ๋“œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
`'pixi.js/bin/pixi.js'์—์„œ PIXI ๊ฐ€์ ธ์˜ค๊ธฐ

๋‚˜๋Š” Webpack์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋””๋ฒ„๊น…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ/๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

npm ์„ค์น˜ pixi.js ์›นํŒฉ

์›นํŒฉ.config.js

var path = require('path');
var webpack = require('webpack');

module.exports = {
    entry: path.resolve(__dirname, 'index.js'),
    output: {
        path: path.resolve(__dirname, 'scripts/'),
        filename: 'bundle.js'
    },
    node: {
        fs: 'empty'
    }
};

index.js

var PIXI = require('pixi.js');
console.log(PIXI);
var renderer = new PIXI.WebGLRenderer(512, 512);

ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ํด๋”์—์„œ:

webpack --config webpack.config.js

๊ฒฐ๊ณผ (projectroot)/scripts/bundle.js๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ glslify ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ˆ˜์ •ํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

https://github.com/pixijs/pixi.js/issues/2439#issuecomment -243820323๊ณผ ๊ฐ™์ด ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ ์—ฌ๊ธฐ์— ๋‹ซํžŒ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ ์—†์ด PIXI๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ webpack์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. webpack 2.x์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ 1.x์—์„œ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

webpack.config.js:

  module: {
    loaders: [
      /// ...
      { test: /node_modules\/pixi\.js/, loader: 'ify' },
    ]
  },

ํŒจํ‚ค์ง€.json:

"devDependencies": {
  "browserify-versionify": "^1.0.6",
  "glslify": "^5.1.0",
  "ify-loader": "^1.0.3",
  "pixi.js": "^4.0.0"
}

๋ถˆํ–‰ํžˆ๋„, ๊ทธ ๋ชจ๋“  ๊ฒƒ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์—ฌ์ „ํžˆ ์ €์—๊ฒŒ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@Adam-Meisen ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก webpack.config.js ๋ฐ package.json ๊ณต์œ ํ•ด๋„ ๋ ๊นŒ์š”? ๊ฑด๋ฐฐ!

+1 ์ €๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ @stephanedemotte ์˜ ์ž„์‹œ ์†”๋ฃจ์…˜(์œ„)์„ ๋”ฐ๋ž

์•ˆ๋…•ํ•˜์„ธ์š”, ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ฉ๋ฆฌ์ ์ธ ์ตœ์†Œ๊ฐ’์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

package.json ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋‹ค๊ณ  ๋งํ•œ ๋ชจ๋“  ๋ชจ๋“ˆ์„ ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค.

    "browserify-versionify": "^1.0.6",
    "glslify": "^5.1.0",
    "ify-loader": "^1.0.3",

https://gist.github.com/Adam-Meisen/db219b1815633400844b350788a11a6e

ํŒŒ์ผ์„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  webpack ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ index.html ๋ฅผ ์—ด๊ฑฐ๋‚˜ webpack-dev-server ์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

@Adam-Meisen ์ด๋ด, ๋‚˜์—๊ฒŒ ์ข‹์•„ ๋ณด์ธ๋‹ค. ํ•ด๋‹น ๊ตฌ์„ฑ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

screen shot 2016-09-15 at 22 26 06

OSX 10.10.1์—์„œ ์‹คํ–‰๋˜๋Š” ๋‚ด ๋…ธ๋“œ ๋ฐ NPM ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ node --version
v6.3.0
$ npm --version
3.10.3

์ €๋Š” Windows์—์„œ ๋…ธ๋“œ 6.3.1 ๋ฐ npm 3.10.6์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
chrome_2016-09-15_15-35-38

๋‚ด๊ฐ€ OSX๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: https://github.com/stackgl/glslify/issues/77

@endel ์œ„์˜ ์†”๋ฃจ์…˜๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @Adam-

@xTiming ์‚ฌ์šฉ ์ค‘์ธ ์šด์˜ ์ฒด์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@endel Windows 10, Chrome์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@endel @xTiming ์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„. ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

webpack.config.js

module: {
        loaders: [
            ...
            { test: path.resolve(__dirname, 'node_modules', 'pixi.js'), loader: 'ify' },
            ...
        ]
    },

์ฐฝ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋Š” ์ž…๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์˜ osx์™€ ๋‹ฌ๋ฆฌ.

image

window10์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image
image

@kimorkim์ด ๊ฒŒ์‹œํ•œ ์†”๋ฃจ์…˜์€ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ํ™•์‹คํžˆ Typed์˜ ๋ชจ๋“  ์ž…๋ ฅ์ด ์—‰๋ง์ž…๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„์ „์— 'pixi.js'์˜ ๋ณ„์นญ์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํƒ€์ดํ•‘์„ ์œ„ํ•ด ์™ธ๋ถ€ js ํŒŒ์ผ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

  externals: {
      // require("jquery") is external and available
      //  on the global var jQuery
      "pixi.js": "PIXI"
  },
import * as PIXI from "pixi.js";

์ƒ˜ํ”Œ ๊ณต์œ ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ossas/sudoku_example2

๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๋งํ•ด์ค˜

์—ฌ๊ธฐ์— ์†”๋ฃจ์…˜์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์€ ์ด๊ฒƒ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ v5์˜ ๊ฒฝ์šฐ glslfy์™€ browserify๋„ ์‚ญ์ œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰