このサイトは、只今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

2022 VIVA JS World Cup 開幕!! 〜 Vue3で作るサッカーゲーム 〜

2022.12.24

OAuthのフローを可視化できるツールを作ってみました。

2020.05.17

令和の時代に、JavaScriptで Shift-JISファイル作成 全銀データフォーマットに対応する。

2020.03.03

インターネットにて世論調査を行う「世論Web」サービスを始めてみました。

2020.01.31

年末のレトロゲーム熱の際、ファミコンソフト一覧パッケージ作ってました。

2020.01.24

あと10日で「jsdo.it」のサービスが終わってしまう!! ソースダウンロードまだの方は急げぇ〜!

2019.10.21

正規表現 先読み後読み 論理積

2019.07.28

「二段階認証?」という方も 5分で覚える パスワードレス WebAuthnのまとめ

2019.07.07

上級者向け JavaScript 問題集 「javascript-questions」日本語翻訳担当してます。

2019.06.22

SPAサイトでの認証認可 JWT✗Rails5✗Nuxt.js

2019.03.24

CATEGORY LIST

LATEST NEWS

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

Flutterで作る ChatGPT Prompt Manager

Flutter

2023.07.12

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US