У меня проблема, когда react-sortable-mixin не соблюдает объявление browserify-shim global:Sortable в моем файле package.json, что приводит к тому, что модуль Sortable упаковывается в мой пакет. Я столкнулся с аналогичной проблемой с другими модулями, так что это вполне может быть проблема с конфигурацией с моей стороны. Я создал небольшой тестовый пакет, который просто требует React и react-sortbable-mixin, чтобы продемонстрировать проблему:
package.json
{
"name": "test",
"version": "1.0.0",
"description": "Just a test",
"main": "index.js",
"dependencies": {
"react": "^0.14.8",
"sortablejs": "^1.4.2"
},
"devDependencies": {
"browserify-shim": "^3.8.12"
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"react": "global:React",
"sortablejs": "global:Sortable",
"sortablejs/react-sortable-mixin": {
"depends": "sortablejs:Sortable"
}
}
}
index.js
"use strict";
var React = require('react');
var SortableMixin = require('sortablejs/react-sortable-mixin');
react-sortable-mixin.js (только первая часть модуля...)
(function (factory) {
'use strict';
if (typeof module != 'undefined' && typeof module.exports != 'undefined') {
module.exports = factory(require('./Sortable'));
}
else if (typeof define === 'function' && define.amd) {
define(['./Sortable'], factory);
}
else {
/* jshint sub:true */
window['SortableMixin'] = factory(Sortable);
}
})(function (/** Sortable */Sortable) { ...
Вот диагностический вывод от browserify:
% BROWSERIFYSHIM_DIAGNOSTICS=1 browserify index.js -t browserify-shim -o bundle.js
{ file: '/home/jlafosse/test/index.js',
info:
{ package_json: '/home/jlafosse/test/package.json',
packageDir: '/home/jlafosse/test',
shim: undefined,
exposeGlobals: { react: 'React', sortablejs: 'Sortable' },
browser: undefined,
'browserify-shim':
{ react: 'global:React',
sortablejs: 'global:Sortable',
'sortablejs/react-sortable-mixin': { depends: 'sortablejs:Sortable' } },
dependencies: { react: '^0.14.8', sortablejs: '^1.4.2' } },
messages:
[ 'Resolved "sortablejs/react-sortable-mixin" found in package.json to "/home/jlafosse/test/sortablejs/react-sortable-mixin"',
'Found depends "sortablejs" as an installed dependency of the package',
{ resolved:
{ '/home/jlafosse/test/sortablejs/react-sortable-mixin':
{ exports: null,
depends: { sortablejs: 'Sortable' } } } } ] }
{ file: '/home/jlafosse/test/index.js',
info:
{ package_json: '/home/jlafosse/test/package.json',
packageDir: '/home/jlafosse/test',
resolvedPreviously: true,
shim: undefined,
exposeGlobals: { react: 'React', sortablejs: 'Sortable' },
browser: undefined,
'browserify-shim':
{ react: 'global:React',
sortablejs: 'global:Sortable',
'sortablejs/react-sortable-mixin': { depends: 'sortablejs:Sortable' } },
dependencies: { react: '^0.14.8', sortablejs: '^1.4.2' } },
messages: [] }
Я знаю, что глобальное шиммирование работает, потому что React не включен в комплект... однако, как упоминалось выше, Sortable включен. Кроме того, если я просто требую ('sortablejs') вместо sortablejs/react-sortable-mixin в моем файле index.js, Sortable НЕ БУДЕТ включен в пакет, как ожидалось, поэтому я думаю, что либо моя конфигурация неверна, либо модуль формат для react-sortable-mixin не учитывает браузерную оболочку.
Любая помощь приветствуется.
Sortable
по всему миру, т. е. с тегом script? Не имеет смысла использовать какglobal:Sortable
, так и./node_modules/sortablejs/Sortable.js:Sortable
в одном и том же файлеpackage.json
. - person YPCrumble   schedule 01.04.2016transform
? Он отсутствует в вашем примереpackage.json
. - person YPCrumble   schedule 01.04.2016