Использование Travis-CI для клиентских библиотек JavaScript?
Я не уверен использовать Travis-CI для моей клиентской библиотеки JavaScript или нет, потому что он компилируется с NodeJs на серверах Travis-CI.
Я хочу знать, что это хороший подход к использованию какой-либо непрерывной интеграции, такой как Travis-CI для клиентских библиотек или нет?
Ответы
Ответ 1
Да, конечно, вы должны использовать непрерывную интеграцию с библиотеками на стороне клиента.
Лично я использую PhantomJS (браузер безголового webkit), который уже установлен в Travis-CI. Я думаю, что это лучший вариант для клиентских вещей, чем NodeJs.
Если вы используете 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).
Ответ 2
Я начал с ответа от Odi и перешел на gulp, чтобы заставить его работать. Если вы укажете node_js в качестве вашего языка в вашем файле travis, travis автоматически запустит
npm install
за которым следует
npm test
Первый установит любые devDependencies, указанные в файле package.json, второй будет запускать script с именем "test" также из package.json. Ниже вы найдете три файла, которые мне необходимы, чтобы на верхнем уровне моего репо для 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": "[email protected]"
},
"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"
}
}
Ответ 3
Оди-ответ обновляется и использует 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
.
Ответ 4
Я нашел этот пример. Довольно всеобъемлющий!
https://github.com/jonkemp/gulp-qunit
пробег:
npm install
gulp test
Он также имеет задачи для lint
просмотра файлов, отчетов о охвате и т.д.