我不确定是否应该在客户端JavaScript库中使用Travis-CI,因为它会在Travis-CI服务器上使用NodeJs进行编译。
我想知道是否使用一些类似于Travis-CI这样的持续集成方法对于客户端库是一个好的选择还是不好?
我不确定是否应该在客户端JavaScript库中使用Travis-CI,因为它会在Travis-CI服务器上使用NodeJs进行编译。
我想知道是否使用一些类似于Travis-CI这样的持续集成方法对于客户端库是一个好的选择还是不好?
当然,你应该在客户端库中使用连续集成。
我个人使用PhantomJS(无头浏览器),它已经安装在Travis-CI中。我认为这比Node.js更适合客户端内容。
如果你使用Grunt,那么使用起来会更加容易,你只需要一个简单的Gruntfile.js文件、在浏览器中运行的测试(我使用QUnit)以及一个简单的.travis.yml文件。
Gruntfile.js
:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
qunit: {
files: ['test/index.html']
}
});
// Load plugin
grunt.loadNpmTasks('grunt-contrib-qunit');
// Task to run tests
grunt.registerTask('test', 'qunit');
};
.travis.yml
:
before_script:
- sudo npm install -g grunt
script: grunt test --verbose --force
您可以在我的一个项目中看到它的运作方式(GitHub上的源代码)。
我开始使用Odi的答案,然后转向gulp来使它正常工作。如果您在travis文件中指定node_js作为您的语言,travis将自动运行它。
npm install
接着
npm test
第一个命令将安装 package.json 文件中指定的所有 devDependencies,第二个命令将运行 package.json 中名为"test"的脚本。以下是我在顶层存储库中需要具有的三个文件,以便 travis 运行单个 QUnit 测试套件。
.travis.yml
language: node_js
node_js:
- "0.10"
gulpfile.js
var gulp = require('gulp'),
qunit = require('gulp-qunit');
gulp.task('default', function() {
return gulp.src('./tests/unit/unittests_nupic-js.html')
.pipe(qunit());
});
package.json
{
"name": "nupic-js",
"version": "0.0.1",
"description": "JavaScript port of NuPIC",
"license": "GPL-3.0",
"repository": "iandanforth/nupic-js",
"bugs": { "url" : "http://github.com/iandanforth/nupic-js/issues"
},
"author": {
"name": "Ian Danforth",
"email": "iandanforth@gmail.com"
},
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"test": "gulp"
},
"keywords": [
"numenta",
"nupic",
"machine learning"
],
"devDependencies": {
"gulp-qunit": "~0.2.1",
"gulp-util": "~2.2.14",
"gulp": "~3.5.1"
}
}
在 Odi 的回答中,使用 npm 来解决依赖问题:
.travis.yml
language: node_js
node_js:
- "6"
.Gruntfile.js
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
qunit: {
files: ['./test/qunit.html']
}
});
// Load plugin
grunt.loadNpmTasks('grunt-contrib-qunit');
// Task to run tests
grunt.registerTask('test', 'qunit');
};
Package.json(相关部分)
"devDependencies": {
"grunt": "^1.0.1",
"grunt-contrib-qunit": "^1.3.0"
},
"scripts": {
"test": "grunt test"
}
npm install
然后 npm test
在本地尝试配置。https://github.com/jonkemp/gulp-qunit
运行:
npm install
gulp test
lint
监视文件、覆盖率报告等任务。
grunt
作为devDependency
提及,是否可以省去before_script部分的需要? - Andreas Köberlegrunt.loadNpmTasks('grunt-contrib-qunit');
才能使其正常工作。我在你提到的仓库的 Gruntfile.js 中看到了这个。 - danvk