私はgulpを使用していますが、gulp-minify-css、gulp-uglifyなどのgulpプラグインも使用しています(アプリケーションのnpm依存関係としてリストされています)。
また、生成されたすべてのファイルがあるnpm_modulesフォルダーとパブリックフォルダーはコミットしません。また、サーバーを展開してセットアップした後、アプリをビルドする方法がわかりません(gulp buildコマンドがあります)(既にパブリックフォルダーを探しています)。
アップロードする前にコミットするのは悪い考えのようです。たぶんいくつかの穏やかな決定があります...何か考えはありますか?
これを「package.json」ファイルに追加することで、これを機能させることができました。
"scripts": {
"start": "node app",
"postinstall": "gulp default"
}
postinstall
スクリプトは、ビルドパックの後に実行されます。詳細については、 this を確認してください。唯一の迷惑なことは、すべての依存関係が個別の「devDependencies」ではなく「dependencies」の下に存在する必要があることです。
ビルドパックや構成で他に何もする必要はありませんでした。これが最も簡単な方法のようです。
私が使用したプロセスについて書いた here
私が見つけた最も簡単な方法は:
gulp
on package.json
スクリプト領域:
"scripts": {
"build": "gulp",
"start": "node app.js"
}
Herokuはアプリを起動する前にビルドを実行します。
dependencies
の代わりにdevDevependencies
にgulpを含めると、Herokuはそれを見つけることができません。
Heroku Dev Centerには、関連する詳細情報があります。 Node.js開発のベストプラクティス
// gulpfile.js
var gulp = require('gulp');
var del = require('del');
var Push = require('git-Push');
var argv = require('minimist')(process.argv.slice(2));
gulp.task('clean', del.bind(null, ['build/*', '!build/.git'], {dot: true}));
gulp.task('build', ['clean'], function() {
// TODO: Build website from source files into the `./build` folder
});
gulp.task('deploy', function(cb) {
var remote = argv.production ?
{name: 'production', url: 'https://github.com/<org>/site.com', branch: 'gh-pages'},
{name: 'test', url: 'https://github.com/<org>/test.site.com', branch: 'gh-pages'};
Push('./build', remote, cb);
});
$ gulp build --release
$ gulp deploy --production
Herokuが提供する特定の起動スクリプトがあります。
"scripts": {
"start": "nodemon app.js",
"heroku-postbuild": "gulp"
}
gulpfile.js(gulpビルドプロセスをes6-ifedした場合はgulpfile.babel.js)には、Herokuを介して依存関係がインストールされた後に自動的に実行されるタスク名のデフォルトが必要です。
https://devcenter.heroku.com/articles/nodejs-support#heroku-specific-build-steps
Herokuは、プロジェクトにgulpfileがあることを検出し、heroku:productiontask(gulpfile内)。したがって、あなたがする必要があるのは、その名前に一致するタスクを登録することだけです:
gulp.task("heroku:production", function(){
console.log('hello'); // the task does not need to do anything.
});
これでherokuがアプリをnot拒否するのに十分です。
Browsersyncを使用しているため、これを機能させるために少し異なる方法をとる必要がありました。
package.json
"scripts": {
"start": "gulp serve"
}
gulp.js
gulp.task('serve', function() {
browserSync({
server: {
baseDir: './'
},
port: process.env.PORT || 5000
});
gulp.watch(['*.html', 'css/*.css', 'js/*.js', 'views/*.html', 'template/*.html', './*.html'], {cwd: 'app'}, reload);
});
ポートを環境ポートに設定することは、Herokuでデプロイする際のエラーを防ぐために重要です。ポストインストールスクリプトを設定する必要はありませんでした。