Gulp라는 플러그인을 써서 PlayCanvas에서의 개발이 매우 편리해졌다

@yushimatenjin.PlayCanvas의 코드 편집기에 첨부된 린트는 JSHint라는 낡은 물건이 맞춤형으로 만들어지지 않아 gulp-playcanvasplaycanvas-nodeplaycanvas-cli와 3개의 라이브러리를 만들었다.gulp의plugin을 만들었기 때문에 그 식견을 공유할 수 있도록 허락해 주세요.

문제


PlayCanvas를 사용할 때 신경 쓰이는 것은 첨부된 코드 편집기인 Lint가 낡았다는 것이다. 구체적으로 말하면
-const 사용하면 노랗게 돼요.
- 세미콜론 없이 빨간색 오류 발생
이런 상황이기 때문에 나는 자신의 편집자로 개발하고 싶다.

만든 플러그인


gulp-playcanvas
npm의 포장으로 공개되었습니다. 아래 명령으로 설치할 수 있습니다.
yarn add gulp-playcanvas
로컬 gulpfile.jswatch, REST API를 사용하여 PlayCanvas에 전송된 콘텐츠를 업로드합니다.
examples - hot-reload

gulpfile.js 파일

const gulp = require("gulp");
const playcanvas = require("gulp-playcanvas");
const pcOptions = require("./playcanvas.json");
const pug = require("gulp-pug");
const sass = require("gulp-sass");

gulp.task("pug", () => {
  return gulp
    .src(["src/**/*.pug", "!src/**/_*.pug"])
    .pipe(pug())
    .pipe(gulp.dest("dist/"))
    .pipe(playcanvas(pcOptions));
});

gulp.task("js", () => {
  return gulp
    .src(["src/**/*.js", "!src/**/_*.js"])
    .pipe(gulp.dest("dist/"))
    .pipe(playcanvas(pcOptions));
});

gulp.task("sass", () => {
  return gulp
    .src("src/**/*.+(scss|sass)")
    .pipe(sass())
    .pipe(gulp.dest("dist/"))
    .pipe(playcanvas(pcOptions));
});

gulp.task("watch", function() {
  gulp.watch(["src/**/*.pug", "!src/**/_*.pug"], gulp.task("pug"));
  gulp.watch(["src/**/*.js", "!src/**/_*.js"], gulp.task("js"));
  gulp.watch("src/**/*.+(scss|sass)", gulp.task("sass"));
});
gulp.task("default", gulp.parallel("watch"));
패키지를 설치한 후 playcanvas.json라는 설정 파일을 같은 디렉토리에 배치하고 yarn gulp 명령으로 객체 watch 를 모니터링하여 파일 내용이 변경될 때 동기화합니다.
playcanvas.json
{
  "accessToken": "",
  "scenes": [],
  "projectId": "",
  "branchId": "",
  "projectName": "",
  "remotePath": ""
}

이동 결과


6월에 2D 게임을 만드는 애니메이션인데 그 자료를 만지면 HMR 동작이 나온다.x4배pic.twitter.com/vMHhrCkHkj - 예(@Mxcn3)2019년 5월 30일
Hot Reload+로컬eslint + prettier으로 개발할 수 있어서 상당히 편안해졌어요.p>
미션은 4개의 동작이 있습니다.p>

1. 모니터링


코드 변경 watch 소스 코드 변경 감지 및 작업 수행
gulp.task("watch", function() {
  gulp.watch(["src/**/*.pug", "!src/**/_*.pug"], gulp.task("pug"));
  gulp.watch(["src/**/*.js", "!src/**/_*.js"], gulp.task("js"));
  gulp.watch("src/**/*.+(scss|sass)", gulp.task("sass"));
});

이 부분아, pug, js, sass 변경이 있는 경우 각자의 임무를 수행한다p>

2. 구축 & 3.업로드


Pug 및 Sass 등을 HTML, CSS로 변환하고 REST API를 사용하여 구축된 코드 업로드
const pug = require("gulp-pug");
/*
gulp.task("pug", () => {
  return gulp
    .src(["src/**/*.pug", "!src/**/_*.pug"])
    .pipe(pug())
    .pipe(gulp.dest("dist/"))
------------自作のプラグインを実行------------------
    .pipe(playcanvas(pcOptions));
------------自作のプラグインを実行--------------------
});
*/

https://github.com/yushimatenjin/gulp-playcanvas/blob/master/index.js#L1


Gulp 플러그인의 내용은 흐르는 파일 정보를 사용하여 업로드됩니다.

옵션의 제공 방법 등 참조gulp-ftpp>

const PlayCanvas = require("playcanvas-node").default;
const through = require("through2");
const gutil = require("gulp-util");
const path = require("path");

module.exports = options =>
  through.obj(function(file, enc, callback) {
    if (file.isNull()) {
      return callback(null, file);
    }

    if (file.isStream()) {
      return cb(
        new gutil.PluginError("gulp-playcanvas", "Streaming not supported")
      );
    }
    const playcanvas = new PlayCanvas(options);
    playcanvas.updateAssets(
      options.remotePath,
      path.basename(file.path),
      file.path
    );

    return callback(null, file);
  });

첫 줄에서 자신이 만든 라이브러리playcanvas-node라는 라이브러리를 읽었는데, 이 라이브러리를 만들었기 때문에 API와의 대화를 간단하게 쓸 수 있어서 좋았고, REST API의 포장을 미리 적는 것이 좋았다p>

참조 링크


PlayCanvas.jp

PlayCanvas/Engine

playcanvas-node

playcanvas-gulp


좋은 웹페이지 즐겨찾기