browserifyやwebpackを使用した開発環境を構築するには vue-cli を導入するのが早いです。
ただ、SASSのビルドでGulpを使用していたので、この既存の環境を拡張する形でVueを使えるようにしたいと思いました。
npmのインストール
npmはnode.jsをインストールすると使えるようになりますので、入っていない場合はインストールしてください。
あとGulpもグローバルにインストールします。
package.json
{ "devDependencies": { "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-es2015": "^6.22.0", "babelify": "^7.3.0", "browserify": "^14.1.0", "gulp": "^3.9.1", "gulp-autoprefixer": "^3.1.1", "gulp-plumber": "^1.1.0", "gulp-sass": "^2.2.0", "gulp-sourcemaps": "^2.4.1", "vinyl-source-stream": "^1.1.0", "vueify": "^9.4.0", "vuex": "^2.2.1" }, "dependencies": { "vue": "^2.2.1" }, "browserify": { "transform": [ "vueify", [ "babelify", { "presets": [ "es2015" ] } ] ] }, "browser": { "vue": "vue/dist/vue.common.js" } }
package.jsonを適当なディレクトリに入れたらカレント下記を実行します。
$ npm install
gulpfile.js
jsファイルは「htdocs/assets/js」に入れて、scssは「htdocs/assets/scss」に入れるという構造にしました。
書き出したファイルは「htdocs/assets/dist」に入ります。
gulpfile.js
var gulp = require("gulp"); // css var sass = require("gulp-sass"); var autoprefixer = require("gulp-autoprefixer"); var plumber = require("gulp-plumber"); var sourcemaps = require('gulp-sourcemaps'); // js var browserify = require('browserify'); var source = require('vinyl-source-stream'); gulp.task('sass', function() { gulp.src('html/assets/scss/**/*scss') .pipe(plumber()) .pipe(sourcemaps.init()) .pipe(sass()) .pipe(autoprefixer({ browsers: ['last 2 versions', 'ie >= 8', 'Android >= 4','ios_saf >= 8'], cascade: false })) .pipe(sourcemaps.write('../maps')) .pipe(gulp.dest('./html/assets/dist/css')); }); gulp.task('build', function() { browserify({ 'entries': ['./html/assets/js/main.js'] }) .bundle() .pipe(plumber()) .pipe(source('./html/assets/dist/app.js')) .pipe(gulp.dest('./')); }); gulp.task('default', function() { gulp.watch("html/assets/scss/**/*.scss",["sass"]); gulp.watch(["html/assets/js/**/*.js", "html/assets/js/**/*.vue"],["build"]); });
設定が終わりましたらターミナルから下記を実行します。
$ gulp
これでファイルが監視されてコンパイルが実行されます。
試してみる
簡単なファイルで試してみます。
index.html
<div id="app"> <app></app> </div> <script type="text/javascript" src="assets/dist/app.js"></script>
assets/js/main.js
import Vue from 'vue' import App from './app.vue' export default new Vue({ el: '#app', components: { App } });
assets/js/app.vue
<template> <p>{{ message }}</p> </template> <script> export default { data() { return { message: "Hello Vue !!!" } } } </script>
参考ページ
はじめてのVue.js – 単一ファイルコンポーネントを作れる環境構築編 (npm + gulp + browserify + babel + vueify)