2016-08-11 13 views
1

ローカル依存関係を持つNodeJSアプリケーションをGAEにどのように配備できますか?ローカル依存関係を持つNodejsアプリケーションをGoogle App Engineにデプロイ

私のアプリはpackage.jsonにローカル依存関係があり、失敗しました。

ありがとうございます!

+0

で実行あなたは溶液であなたの質問に答えを追加する必要があります - [OK]を未回答 –

+0

として表示される質問を残さないようにすること。申し訳ありません。 –

+0

問題ありません。ありがとう。 –

答えて

0

私はそれを自分でやったわけではありません。誰にとっても同じ問題が解決策です。ローカルリソースを現在のディレクトリにコピーするには、gulpを使用します。

const gulp = require('gulp'); 
const merge = require('merge-stream'); 
const runSequence = require('run-sequence'); 
const del = require('del'); 
const fs = require('fs'); 
const resolve = require('path').resolve; 

let getPackageGlobs = (dir) => { 
    let paths = [ 
    dir + '/**', 
    '!' + dir + '/node_modules/**', 
    '!' + dir + '/npm-debug.log', 
    '!' + dir + '/build', 
    ]; 

    try { 
    let data = fs.readFileSync(dir + '/.npmignore', { 
     encoding: 'utf-8', 
    }); 

    paths = paths.concat(data.split("\n") 
     .filter((e) => e.length > 0) 
     .map((e) => dir + '/' + e) 
     .filter(fs.existsSync) 
     .map((e) => fs.lstatSync(e).isDirectory() ? '!' + e + '/**' : '!' + e)); 
    } catch (err) { } 

    return paths; 
}; 

gulp.task('build.clean',() => { 
    return del(__dirname + '/build'); 
}); 

gulp.task('build.copy',() => { 
    return gulp.src(getPackageGlobs(__dirname)) 
    .pipe(gulp.dest('build')); 
}); 

gulp.task('build.normalize',() => { 
    let packageJson = require('./build/package.json'); 
    let tasks = []; 

    for (let name in packageJson.dependencies) { 
    for (let s of ['../', '~/', './', '/']) { 
     if (packageJson.dependencies[name].startsWith(s)) { 
     tasks.push(gulp 
     .src(getPackageGlobs(resolve(packageJson.dependencies[name]))) 
     .pipe(gulp.dest('./build/local_modules/' + name))); 

     packageJson.dependencies[name] = './local_modules' + '/' + name; 

     break; 
     } 
    } 
    } 

    return new Promise((resolve, reject) => { 
    fs.writeFile('./build/package.json', 
     JSON.stringify(packageJson), (err) => { 
     if (err) { 
      reject(err); 
     } else { 
      resolve(merge(tasks)); 
     } 
     }); 
    }); 
}); 

gulp.task('build', (done) => { 
    runSequence('build.clean', 
    'build.copy', 
    'build.normalize', 
    done); 
}); 

そしてgulp build && gcloud app deploy build/app.yaml

関連する問題