Я использую yepnope
для условной загрузки скриптов на основе некоторых тестов, а также использую browserify
через grunt-browserify
для создания своих скриптов. Теперь я хочу, чтобы один скрипт заменял другой, но по-прежнему вызывался через тот же запрос:
// if svg support, then d3.js, otherwise r2d3.js
var d3 = require('d3');
Так что d3
используется как требование в моем коде, а также как зависимость для другой библиотеки.
Проблема в том, что это нельзя сделать с помощью разных операторов require, потому что они выполняются во время сборки, а тест не может быть выполнен, потому что это зависит от браузера пользователя.
Поэтому мне нужен способ указать, что зависимость использует d3
из window.d3
, поэтому я могу установить объект окна с помощью любой из библиотек. Это моя конфигурация grunt-browserify.
options: {
external: ['d3'],
shim: {
'd3-chart': {
path: 'assets/bower_components/d3.chart/d3.chart.js',
exports: null,
depends: {
d3: 'd3'
}
}
}
}
Я получаю Cannot find module 'd3'
при загрузке r2d3, хотя это экспортирует window.d3< /а>.