Допустим, у меня есть проект, который использует беседу, ворчание, bowerify (с прокладкой), и так как я очень люблю Jest, я хочу проверить это. Как в мире я получаю шутку, чтобы увидеть мои браузерные модули прокладки при выполнении тестов. Я использую grunt, чтобы запустить команду проверки npm. Вот мой файл package.json.Загрузка модуля Jest и Bower в тестах шутки
"browser": {
"jquery": "./bower_components/jquery/dist/jquery.js",
"foundation": "./bower_components/foundation/js/foundation/foundation.js",
"fastclick": "./bower_components/fastclick/lib/fastclick.js",
"greensock-tm": "./bower_components/gsap/src/uncompressed/TweenMax.js",
"greensock-css": "./bower_components/gsap/src/uncompressed/plugins/CSSPlugin.js",
"greensock-time": "./bower_components/gsap/src/uncompressed/TimelineMax.js",
"scrollmagic": "./bower_components/ScrollMagic/js/jquery.scrollmagic.js",
"handlebars": "./bower_components/handlebars/handlebars.runtime.js"
},
"browserify-shim": {
"jquery": "$",
"greensock-css": "CSSPlugin",
"fastclick": "FastClick",
"greensock-tm": "TweenMax",
"greensock-time": "TimelineMax",
"scrollmagic": "ScrollMagic",
"foundation": "foundation",
"handlebars": "Handlebars"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
Прямо сейчас я почти все это разработал, выполнив это в своем файле grunt, прежде чем запускать тест.
grunt.registerTask("shimBowerForTests",function(){
var readJson = require('read-package-json');
var fs = require('fs');
var remapify = require('remapify');
readJson('./package.json', console.error, false, function (er, data) {
if (er) {
throw "There was an error reading the file";
}
var packages = data.browser;
var browserify = require('browserify');
for (var key in packages){
var b = browserify();
var wstream = fs.createWriteStream("devjs/test/modules/"+key+'.js');
b.add(packages[key]);
b.bundle().pipe(wstream);
}
});
});
и.
exec: {
jestTest: {
command: 'cp -r devjs/modules devjs/test/modules && npm test'
}
}
Проблема заключается в том, что использование browserify так объединить все для браузера прекрасно работает с моей установкой, и я могу требовать моей подкладки модули, как это. require('jquery') //example
, но в шутке кли тест терпит неудачу, потому что они могут найти модуль, если я что-то не префикс с ./, как так require('./jquery')
Не могли бы вы добавить фрагмент кода для того, что вы сделали в препроцессоре? – stefvhuynh
Сделаю немного. – austbot
@AustinAdams Мне также было бы интересно увидеть ваше решение, поскольку я пытаюсь сделать то же самое со шуткой, беседкой и webpack. –