我有一个项目,我用 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']);
我有什么明显的遗漏吗?
答案 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
可以解决问题。