gulpのビルド環境の設定
会社のフロントが使用しているgulp環境を利用してドメイン等のbuild環境の設定を行いました。
以下の目標で実装を行いました。
- 出来ればモジュールを追加しない
- 切り替えが簡単
使用モジュール
Laravelを使っているので当初はenvファイルを読み込む方法を考えてみましたが、そうなると「dotenv」、「node-env-file」、「gulp-env」等をインストールしないと行けなく、会社では別にDeploerなものでデプロイ等しなくて良いので、別の分ける必要がないかと考えました。
それで使用するのは「minimist」のみにしておきました。
環境変数の定義
発想としてはdotenvと同じくnpmで利用している環境Objectがあるのでそこで追加したらどうかと思いました。
import minimist from 'minimist';
const options = minimist(process.argv.slice(2), {
string: 'env',
default: {
env: 'dev'
}
});
if (options.env === 'pro') {
// 本番環境
process.env = Object.assign(process.env, {
domain: 'https://pro-example.com'
});
} else if (options.env === 'stg') {
// テスト環境
process.env = Object.assign(process.env, {
domain: 'https://stg-example.com'
});
} else {
// ローカル環境
process.env = Object.assign(process.env, {
domain: 'http://dev-example.com'
});
}
「minimist」はgulpの実装Optionの取得・ディフォルトの設定に使いました。「process.env」へ情報を追加する方法は「Object.assign」メソードを利用しました。
読み取り方法
import gulp from 'gulp'
import pug from 'gulp-pug'
import plumber from 'gulp-plumber'
・・・・
const pugOption = {
verString: new Date().getTime(),
domainUrl: process.env.domain // pug内部で直接書いても認識できる
}
・・・・
gulp.task('pug', ['・・・・'], () => {
return gulp.src([paths.pug_src, paths.pug_exclude])
.pipe(plumber())
.pipe(gulpif(global.isWatching, cached('pug')))
.pipe(filter(function(file) {
return !/\/_/.test(file.path) && !/^_/.test(file.relative);
}))
.pipe(pug({
pretty: true,
locals: pugOption
}))
.on('error', (err) => {
console.log(err.message);
})
.pipe(gulp.dest('dist'))
.pipe(browserSync.stream());
});
・・・・
pugのタスクのソースの一部です。「process.env.domain」のように直接に使えます。実際のpugファイルへ使っても出来ますが、このファイルではpugのオプションで渡す感じでやってみました。
・・・・
img(src=domainUrl+"/img/logo_commufa.png?ver="+verString)
・・・・
もちろん以下のように直接でも可能です。
img(src=process.env.domain+"/img/logo_commufa.png?ver="+verString)
使い方
# gulp pug --env dev // process.env.domain : http://dev-example.com
# gulp pug --env stg // process.env.domain : https://stg-example.com
# gulp // process.env.domain : http://dev-example.com
Author And Source
この問題について(gulpのビルド環境の設定), 我々は、より多くの情報をここで見つけました https://qiita.com/FattyRabbit/items/aaa3673e6ec633b2ec6a著者帰属:元の著者の情報は、元の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 .