构建JavaScript项目Travis-CI时出错

时间:2016-02-19 16:30:50

标签: javascript gulp travis-ci

我有一个项目,我用 Gulp.js 在本地构建。但是当我把它推到GitHub并且Travis开始构建它时。我收到以下错误:

module.js:338
    throw err;
    ^
Error: Cannot find module 'gulp-concat'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/travis/build/thyagostall/freecell/gulpfile.js:4:11)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)

.travis.yml

language: node_js
node_js:
  - "0.12"
before_script:
  - npm install -g gulp gulp-concat gulp-connect gulp-html-replace gulp-eslint
script: gulp

我的gulpfile.js

var gulp = require('gulp'),
    connect = require('gulp-connect'),
    concat = require('gulp-concat'),
    htmlreplace = require('gulp-html-replace');

var distDir = './build/',
    sourceDir = './src/';

gulp.task('webserver', function() {
    connect.server({
        root: distDir,
        port: 2345,
        livereload: true
    });
    gulp.watch('src/**/*.*', ['build', 'images', 'styles', 'vendor']);
});

gulp.task('images', function() {
    gulp.src(sourceDir + '**/*.{jpg,png,gif}')
        .pipe(gulp.dest(distDir));
});

gulp.task('styles', function() {
    gulp.src(sourceDir + '**/*.css')
        .pipe(gulp.dest(distDir));
});

gulp.task('build', function() {
    gulp.src([sourceDir + '**/utility.js', sourceDir + '**/game_events.js', sourceDir + '**/memento.js', sourceDir + '**/*.js'])
        .pipe(concat('main.js'))
        .pipe(gulp.dest(distDir))
        .pipe(connect.reload());
});

gulp.task('vendor', function() {
    gulp.src(sourceDir + '**/*.html')
        .pipe(htmlreplace({
            'vendor': 'vendor.js',
            'js': 'main.js'
        }))
        .pipe(gulp.dest(distDir));
});

gulp.task('lint', function() {
    gulp.src(sourceDir + '**/*.js')
        .pipe(eslint())
        .pipe(eslint.format())
});

gulp.task('default', ['build', 'images', 'styles', 'vendor']);

我有什么明显的遗漏吗?

1 个答案:

答案 0 :(得分:1)

首先,将您的.travis.yml更改为:

language: node_js
node_js:
  - "0.12"
before_script:
  - npm install -g gulp
script: gulp

您只需要全局安装gulp,因为这会提供gulp命令行工具。根据{{​​3}}:

  

有两种方法可以安装npm软件包:本地或全局。您可以根据要使用包的方式选择要使用的安装类型。

     

如果你想将它用作命令行工具,比如grunt CLI,那么你想要全局安装它。另一方面,如果您想使用Node's require等依赖于您自己模块的软件包,那么您希望在本地安装。

其次,我在您的github帐户上进行了一些调查(从您的StackOverflow配置文件链接)并找到了您正在尝试构建的official npm documentation。查看project我发现gulp-concat中没有devDependencies。这可能是因为打字:

npm install gulp-concat

而不是:

npm install gulp-concat --save-dev

这可以解释为什么你可以在本地构建项目,但它在Travis-CI上失败了。将gulp-concat添加到devDependencies可以解决问题。