Korzystanie z Travis-CI dla bibliotek JavaScript po stronie klienta?
Nie jestem pewien, czy używam Travis-CI dla mojej biblioteki JavaScript po stronie klienta, czy nie, ponieważ kompiluje się z NodeJs na serwerach Travis-CI.
Chcę wiedzieć, czy jest to dobre podejście do korzystania z pewnego rodzaju ciągłej integracji , takiej jak Travis-CI dla bibliotek po stronie klienta, czy nie?
4 answers
Tak, oczywiście powinieneś używać ciągłej integracji z bibliotekami po stronie klienta.
Osobiście używam PhantomJS (headless webkit browser)który jest już zainstalowany w Travis-CI. Myślę, że jest to lepsza opcja dla rzeczy po stronie klienta niż NodeJs.
Jeśli używasz Grunt , staje się jeszcze łatwiejszy w użyciu, wszystko, czego potrzebujesz, to prosty Gruntfile.plik js, testy uruchamiane w przeglądarce (używam QUnit ), oraz prosty .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
Możesz zobaczyć go w akcji w jednym z moich projektów (źródło na Githubie ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-11 11:43:30
Zacząłem od odpowiedzi Odi i przeniosłem się do gulp, aby go uruchomić. Jeśli podasz node_js jako swój język w pliku travis, travis automatycznie uruchomi
npm install
Po którym następuje
npm test
Pierwszy zainstaluje dowolne devDependencies określone w pakiecie.plik json, drugi uruchomi skrypt o nazwie "test" również z pakietu.json. Poniżej znajdziesz trzy pliki, które musiałem mieć na najwyższym poziomie mojego repo, aby travis mógł uruchomić pojedynczy qunit Apartament.
.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());
});
Pakiet.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"
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-05 16:28:05
Odpowiedź Odi zaktualizowana i użycie npm do rozwiązywania zależności:
.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');
};
Paczka.json (odpowiednie części)
"devDependencies": {
"grunt": "^1.0.1",
"grunt-contrib-qunit": "^1.3.0"
},
"scripts": {
"test": "grunt test"
}
Możesz spróbować konfiguracji lokalnie uruchamiając npm install
, a następnie npm test
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-25 16:25:48
Znalazłem ten przykład. Dość obszerny!
Https://github.com/jonkemp/gulp-qunit
Run:
npm install
gulp test
Ma również zadania do lint
oglądania plików, raportów pokrycia i innych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-06 03:20:17