Я пытаюсь создать универсальный код JavaScript (ранее известный как изоморфный код JavaScript). ) упаковка. Это означает, что он должен работать как модуль узла, но также без проблем работать в браузере.
Предположим, что это выглядит так:
// awesome.js
module.exports = function () {
return 10;
}
Монтаж:
$> npm install awesome
и включите его:
// index.js
var awesome = require('awesome')
Чтобы использовать это в браузере, вы должны использовать browserify
$> ./node_modules/.bin/browserify index.js -o bundle.js",
Пока никаких проблем. Однако, когда дело доходит до модульного тестирования с использованием Karma и Jasmine, я получаю неопределенный module
(это переменная module
из awesome.js
)
Конфиг кармы выглядит так:
gulp.task('test', function () {
var Server = require('karma').Server;
new Server({
autoWatch: true,
browsers: [
'Chrome'
],
coverageReporter: {
type: 'lcov',
dir: 'coverage/'
},
frameworks: [ 'browserify', 'jasmine'],
files: [
'awesome.js',
'tests/spec-helpers.js',
'tests/awesome.spec.js'
],
junitReporter: {
outputFile: 'target/junit.xml'
},
preprocessors: {
'awesome.js': 'coverage',
'tests/awesome.spec.js': ['browserify']
},
browserify: {
debug: true,
transform: [ 'brfs' ]
},
reporters: [
'junit',
'coverage'
],
singleRun: false,
}).start();
});
удивительный-spec.js
var awesome = require('awesome');
describe('Awesome', function () {
it('should return 10', function () {
expect(awesome()).toBe(10);
});
});
По какой-то причине browserify
не работает должным образом. Любое предложение, почему это так?
Также приветствуются любые улучшения, касающиеся universal javascript
!
watch: true
кbrowserify: {}
? - person Michał Perłakowski   schedule 12.04.2016