このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

会社で npm Private導入して、1ヶ月で8個ほどパッケージ作成したお話。

JavaScript

2017.06.02

この記事は最終更新日から1年以上が経過しています。

どもです。

皆さん、お仕事頑張っているでしょうか。

私は、なんだかんだでぼちぼち頑張っております。

 

と、言うわけで、表題のとおり、 会社でコツコツと、 「npm Private」導入して、1ヶ月で8個+α ほどパッケージ作成しておりました。

npm

https://www.npmjs.com/

 

と、言うのも、実は私、再びゲーム業界の方へと転職しておりました。

なんだかんだで、あっという間に1ヶ月が過ぎてしまいました。

再び、DHTMLでネイティブさながらのゲーム作りに没頭する日々となったのですが、ライブラリも共通で使いまわす仕組みもない。

あるにはあるのですが、時が経てるのもあって、今の時代とちょっと合わない様な感じでした。

どうせなら、「npmで管理出来るように作りましょう。」

と言い出しちゃいまして、今回、 npmのPrivateを導入致しました。

 

npm Privateアカウントは1ヶ月 7$で使用できます。

軽量のモーダルウィンドウやら、プリロードやらトゥイーンやら、CSSまでも何やかんや、npmパッケージ化しちゃいました。

いやぁいいですね。

 

DOMにバインディング必要なものは、

data-hoge-packagename

 

とかで処理が走るようにしたりと、

const Tween = require('@hoge/tween');

で、使用出来たりと、いやぁ、便利ですね。今回色々と揃えましたよ。

このパッケージ制作のみならず、同時にWEBゲームの方も作成しながらでしたので、

もう最近、お腹いっぱいな状況だったりもします。

 

webpack

 

ビルドツールはすべて「webpack」使用しております。

webpack

https://webpack.github.io/

言語が「TypeScript」を利用しておりまして、コンパイルは全て webpackにお任せしている感じです。

何ら、問題なく使っていたのですが、事件はnpm install した後に起きました。

require出来ねぇ。

状況として、webpackでビルド後 → npmパッケージ化 → webpackで制作しているゲームに npm install → requreのパスが通っているが、パッケージが空の状態。

悩むこと数時間。

問題は、ビルドの設定でした。

どうやら、「umd」形式でビルドしなくていけなかったようでした。。 orz

output: {
  path: __dirname,
  filename: "[name].bundle.js",
  library: "Hoge",
  libraryTarget: "umd"
}

Start your own JavaScript library using webpack and ES6

http://krasimirtsonev.com/blog/article/javascript-library-starter-using-webpack-es6

 

パッケージとして利用する時、上記の設定を行うことで、下記の様にビルドされ パッケージとしてrequreすることが出来ました。

 

(function webpackUniversalModuleDefinition(root, factory) {
  if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory();
  else if(typeof define === 'function' && define.amd)
    define("library", [], factory);
  else if(typeof exports === 'object')
    exports["library"] = factory();
  else
    root["library"] = factory();
})(this, function() {
return (function(modules) {
 ...
 ...

そういえば、何気に webpackでnpm パッケージ化したのは今回初でした。。

いやぁ。解決出来てよかった。

 

Vue Class Component

途中でも書いているように、このパッケージ化するだけでなく同時に「DHTMLのゲーム制作」も同時進行している状況だったりもします。

所謂、「ポチポチゲー」ではなく、「ネイティブさながらのUXの実装」を強く求められているのもありまして、(まぁ得意でもありまして)

Canvasでは、Android端末で満足いくFPSが稼げないところもあり、再び 必然的に DHTMLの選択となりました。

 

その際、スマホなので軽量且つ、楽にMVVMを実装出来るフレームワークの選択として「Vue JS」を選択しました。

 

と同時に、ゲーム制作となると、型がないと辛いところもあって、(毛嫌いされてる感じがありましたが、webサービス制作などでも最近広まってきましたね。)これもまた、「TypeScript」を導入するのと「Component」指向で制作していきたいのもあって、

Vue Class Component」を選択しました。

 

github
Vue Class Component

いやぁ。VueJSも人気が出てきておりますよねぇ。

VueJSを使用されている方は、 「Vue Class Component」オススメします。

DOMのアニメーションなどもガンガン入ることもあって、componentも出来る限り、小さく作るように心がけ日々頑張っております。

Angular1の時のcontrollerでもそうだったのですが、どの単位で抽象化することが肝な感じがありますよね。

その辺の環境や実装周りも近いうち追って記事にでも出来ればなぁと思っております。

最後に

npm Private いいぞぉ!!!

やはり、企業のソースとなると、出せない(OSS出来ない)ソース(パッケージ)があったりもするのですが、npm Privateを、利用すれば気にしないでいいのが良いですね。

「これ、毎度毎度書いてない?」

と、心当たりある方は、パッケージ化 → npm Privateをオススメします!w

あと、一気に環境が整ってきた感が否めないところが良いです。

なんだかんだで、やりきった感あるのですが、

まだまだ、全部が全部、パッケージ化出来ていなく、ゲームの制作を行いながら、「コマンドラインツール」やら 「ゲームループ」やら「タイルマップ」などなどのパッケージ化も引き続き行って行く予定です。

というわけで、npmの回し者みたいな感じになりましたが、会社で「npm Private」を、一度導入してみてはいかがでしょうか。

ではではぁ。

Comment

Related Article

Vue.js + SSR (Universal JavaScript)環境を、「NUXT.js」でサクッと構築する方法。

2017.10.09

フロントエンド開発が捗る JSON Serverについて

2017.07.10

技術書、参考書のしおりには【BOOK DARTS】がオススメ!

2017.07.01

会社で npm Private導入して、1ヶ月で8個ほどパッケージ作成したお話。

2017.06.02

Vue.js が予想以上に良かったので、既存WordPressに導入。Vue.js (vue-class-component) + TypeScript + WordPress で作る、記事読み込み component 「実装編」

2017.03.26

Vue.js が予想以上に良かったので、既存WordPressに導入。Vue.js (vue-class-component) + TypeScript + WordPress で作る、記事読み込み component 「環境構築編」

2017.02.21

Facebook製 JavaScript 関数ライブラリ。Immutable.js がいい感じ!

2016.07.31

【JS】フロントでレコメンドアルゴリズムを簡単実装できるJavaScriptライブラリ「RecommendJS」を公開しました。

2016.05.30

JavaScript ビット演算・ビットマスクについてまとめてみました。

2016.03.15

マテリアルデザイン対応!タッチ、クリックでエフェクト。RippleEffectJSを公開しました!

2016.02.01

CATEGORY LIST

LATEST NEWS

debian & Xserver XDSLで FireFoxが真っ白のページとなる件

Linux

2018.07.08

Kindle Fire HD 8 にLinuxを導入して扱えるようにする。超コスパ Linux タブレット構築方法!!

Linux

2018.07.04

Laravel 4 を PHP 7 環境へ移行したお話。

PHP

2018.06.10

iPhoneXで、ubuntuを動かす。

サーバー

2018.06.09

仮想通貨(暗号通貨)の作り方 その2 (Gethの使い方)

暗号通貨、ブロックチェーン

2018.05.20

$PAC (パックコイン)Macでマスターノードを建てる方法

暗号通貨、ブロックチェーン

2018.05.14

ついに「ウェブ帳」リニューアルしましたぁ!!!(PC 版)

イベント

2018.05.07

Raspberry Pi 3 Model B+ 2018 ニューモデルを購入!!

RaspberryPi

2018.04.23

仮想通貨(暗号通貨)の作り方 その1

暗号通貨、ブロックチェーン

2018.04.09

iPad Proで開発を行いたい。

iPad

2018.03.29

CPU使用しすぎて、Conohaからサーバーシャットダウンされた件。

tool

2018.03.28

春の大掃除。VHSに続いて、カセットテープもデジタル化!microSD保存 MP3変換プレーヤーを使ってみた。

tool

2018.03.27

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US