npm 使ってサイト制作時に使うテンプレート
やりたいこと
- CSSやJSの minify とかやりたい
- CSSで mixin とかネストとかしてみたい
- Gulp 疲れちゃった
と言った感じ。
以前から使ってたテンプレートは Gulp を使用してましたが、重い腰を上げて npm で動作するように構成を変更しました
PostCSS篇
前回の記事(npm-scriptでPostCSS)もご参照ください。
今回は minify を解説。するのですが、インストールは今までと同じなので割愛します。
前回までの続きで、設定ファイルの最後に cssnano
を追記します。
最後に追記することに注意してください。
また、autoprefixer
がバージョンアップしたことによって、IE11での display: grid
がうまく補完してくれなくなりました。
それに対応するために grid: "autoplace"
を追記しましょう。
module.exports = () => ({
plugins: {
'postcss-import': {},
'postcss-mixins': {},
'precss': {},
'autoprefixer': {
"browsers": "last 2 versions",
grid: "autoplace"
},
'cssnano': {}
}
})
JS篇
JSの階層構造を維持して出力したい & minify したいは、Webpackを使います。
package.json
と同階層に webpack.config.js
を作成します。
中身はこんな感じにします。
const glob = require("glob");
const entries = glob.sync("./resources/js/src/common/**/*.js");
module.exports = {
entry: entries,
output: {
path: __dirname + '/htdocs/common/js',
filename: 'app.js'
}
};
glob
を使用しています。
これは何かというと、指定したディレクトリ内のファイルをまとめてエントリーポイントに設定してくれるプラグイン的なものです。
glob.sync("./resources/js/src/common/**/*.js");
上記の記述でディレクトリを指定しています。
output: {
path: __dirname + '/htdocs/common/js',
filename: 'app.js'
}
こちらの記述で、出力したいところと、ファイル名を設定しています。
ちなみに、同じ元ファイルを別々の場所に出力したいというときは下記のような方法を取ることで実現できます。
const glob = require("glob");
const entries = glob.sync("./resources/js/src/common/**/*.js");
const mainConfig = {
entry: entries,
output: {
path: __dirname + '/htdocs2/js',
filename: 'app.js'
}
}
const distConfig = {
entry: entries,
output: {
path: __dirname + '/htdocs/webroot/js',
filename: 'app.js'
}
}
module.exports = [mainConfig, distConfig]
開発篇
さて、それでは開発していくのですが、ファイルを保存したときに出力したいですよね。
package.json の scripts
を下記のような感じにします。
"scripts": {
"build:css": "postcss resources/css/src/**/[^_]* --base ./resources/css/src --dir htdocs",
"watch:css": "npm run build:css -- --watch --map",
"build:js": "webpack",
"watch:js": "npx webpack --watch",
"watch:project": "npm run watch:css | npm run watch:js"
},
見てもらうとわかるようにそれぞれの役割は
- CSSファイルをビルドする
- CSSファイルの変更を監視する
- JSファイルをビルドする
- JSファイルの変更を監視する
- 「CSSファイルの変更を監視する」と「JSファイルの変更を監視する」を監視する
という感じになっています。
なので、ターミナルに
npm run watch:project
とすることで、CSSファイルとJSファイルの変更を監視し、変更されたら出力する…という感じになります。
ソース
GitHub に置いておきます。
https://github.com/axcelwork/package
使い方
適宜、使いたいディレクトリに一式を置いた後は
npm install
とすることで環境が整います。
では、また
Author And Source
この問題について(npm 使ってサイト制作時に使うテンプレート), 我々は、より多くの情報をここで見つけました https://qiita.com/axcelwork@github/items/65e578637fc1f62dcf3d著者帰属:元の著者の情報は、元の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 .