npm-scriptsでejs、postcss、watchify
これまでgrunt、gulp、webpack
と、いろいろ使ってきましたが、ご多分に漏れずなんか疲れてしまったのと、npm-scripts原理主義者からの勧めもあり、npm-scripts
に移行しようと思いたつ。
備忘録も兼ねて導入手順を書いておきます。
これまではgulp
でejs
をコンパイルしてきたので、なるべくならその環境に近いものを作りたい。
階層構造はこんな感じを想定しています。
.
├── dist
│ ├── css
│ │ └── style.css
│ └── js
│ ├── bundle.js
│ └── bundle.min.js
├── src
│ ├── css
│ │ ├── _item.pcss
│ │ └── style.css
│ ├── ejs
│ │ ├── common
│ │ │ ├── _footer.ejs
│ │ │ └── _head.ejs
│ │ └── index.ejs
│ └── js
│ ├── app.js
│ └── sub.js
├── .postcssrc.json
└── package.json
ルートの階層で
$ npm init
全部Enter
ejsによるhtmlのコンパイル
$ npm install ejs-cli -D
最終的に全てnpm run
コマンドで叩けるようにするので、ローカルインストール。
グローバルインストールとローカルインストールの違いについていまいち理解してなかったので、こちらを参考にしました。
以下コマンドで動けばOK。
$ ./node_modules/.bin/ejs-cli --base-dir src/ejs '*.ejs' --out dist/
毎回node_modules
からコマンドを叩くのは面倒なので、npm run
から動くようにします。
"scripts": {
"ejs": "ejs-cli --base-dir src/ejs '*.ejs' --out dist/"
},
$ npm run ejs
index.html
の出力が確認できればejsは終わりです。
postcssによるcssのコンパイル
これまでずっとsass
を使ってきましたが、にわかにpostcss
への流れがありそうなので今回はpostcss
にしてみます。
postcss
をローカルインストール。
$ npm install postcss-cli -D
以下コマンドで動けばOK。
※もしエラーがでる場合は、package.json
のpostcss
のバージョンを"^2.6.0"
してnpm install
した後にもう一度コマンドを叩いてください。
原因はわかりませんが、このバージョンにしたら動きました…
この段階ではpostcss
の記述からcss
の記述へコンパイルされていなくて問題ありません。
$ ./node_modules/.bin/postcss --dir dist/css/ src/css/*.css
次に、postcss
に@import
機能を追加します。
$ npm install postcss-import -D
システムファイルを追加します。
{
"use": [
"postcss-import"
]
}
_item.css
を用意し適当な記述をして、style.css
に読み込ませます。
@import '_item.pcss';
以下コマンドを叩く。
$ ./node_modules/.bin/postcss --config .postcssrc.json --dir dist/css/ src/css/*.css
_item.pcss
の記述がstyle.css
に展開されたと思います。
このコマンドも、npm run
で動くようにします。
"scripts": {
"ejs": "ejs-cli --base-dir src/ejs '*.ejs' --out dist/",
"postcss": "postcss --config .postcssrc.json --dir dist/css/ src/css/*.css"
},
これで、postcss
もnpm run
のコマンドで動くようになりました。
$ npm run postcss
postcss
にnest、prefix、min
の機能を追加します。
$ npm install postcss-nested autoprefixer csswring -D
{
"use": [
"postcss-import",
"postcss-nested",
"autoprefixer",
"csswring"
]
}
このままではcss
へコンパイルするたびにコマンドを叩かなくてはならないので、変更を監視します。
"scripts": {
"ejs": "ejs-cli --base-dir src/ejs '*.ejs' --out dist/",
"postcss": "postcss --config .postcssrc.json --dir dist/css/ src/css/*.css",
"watchcss": "npm run postcss -- --watch"
},
これで以下コマンドを叩けばcss
の変更を監視してくれます。
$ npm run watchcss
watchifyでjsをコンパイル
browserifyはどうしても重くなってしまうので、今回はwatchrify
にします。
watchify
をローカルインストール
$ npm install watchify -D
以下の通り、js
ファイルを用意します。
var sub = require('./sub.js');
sub('sub.jsの処理')
console.log('hoge');
module.exports = function(text) {
console.log(text);
};
ejs、postcss
同様にnpm run
で動かすようにpackage.json
に追記
"scripts": {
"ejs": "ejs-cli --base-dir src/ejs '*.ejs' --out dist/",
"postcss": "postcss --config .postcssrc.json --dir dist/css/ src/css/*.css",
"watchcss": "npm run postcss -- --watch",
"watchify": "watchify --entry src/js/app.js --outfile dist/js/bundle.js --verbose"
},
$ npm run watchify
リリース用にmin
化します。
$ npm install uglify-js -D
"scripts": {
"ejs": "ejs-cli --base-dir src/ejs '*.ejs' --out dist/",
"postcss": "postcss --config .postcssrc.json --dir dist/css/ src/css/*.css",
"watchcss": "npm run postcss -- --watch",
"uglify": "uglifyjs --compress warnings=false --mangle --output dist/js/bundle.min.js -- dist/js/bundle.js",
"watchify": "watchify --entry src/js/app.js --outfile dist/js/bundle.js --verbose"
},
$ npm run uglify
これで環境設定は終了です。
ejs
もwatch
できないかなと探してみたのですが方法がわからず…
まだまだ若輩者ゆえ、なんか間違ってるよ。等ありましたらコメントいただけると幸いです。
Author And Source
この問題について(npm-scriptsでejs、postcss、watchify), 我々は、より多くの情報をここで見つけました https://qiita.com/fgkm/items/6c22c0a2b6c2884c07e3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .