Как настроить Webpack для создания пакета UMD, чтобы имя пакета для AMD и CommonJS было названо в нижнем регистре (spinal-case), а для глобального контекста будет иметь CamelCase имя?Webpack output UMD-библиотека с именем CamelCase и spinal-case
Например, я ожидаю, что моя связка начать с
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("dependency"));
else if(typeof define === 'function' && define.amd)
define("my-library", ["dependency"], factory); // spinal-case
else if(typeof exports === 'object')
exports["my-library"] = factory(require("dependency")); // spinal-case
else
root["MyLibrary"] = factory(root["dependency"]); // CamelCase
})...
Вот как это выглядит в ReactDOM:
(function(f) {
// CommonJS
if (typeof exports === "object" && typeof module !== "undefined") {
module.exports = f(require('react'));
// RequireJS
} else if (typeof define === "function" && define.amd) {
define(['react'], f);
// <script>
} else {
var g;
if (typeof window !== "undefined") {
g = window;
} else if (typeof global !== "undefined") {
g = global;
} else if (typeof self !== "undefined") {
g = self;
} else {
// works providing we're not in "use strict";
// needed for Java 8 Nashorn
// see https://github.com/facebook/react/issues/3037
g = this;
}
g.ReactDOM = f(g.React);
}
})(function(React)...
В качестве примера при использовании ES6 вы импортируете ReactDOM из «response-dom», «var ReactDOM = require ('react'); с RequireJS, и когда просто добавляете скрипт в файл, вы просто вызываете 'ReactDOM' (' window.ReactDOM'). См. Пакет ReactJS https://npmcdn.com/[email protected]/dist/react-dom.js –
@AlexanderShutov, я обновил свой ответ с лучшим примером, и репо вы можете исследовать/экспериментировать с , – KevBot
Наконец, чтобы получить то, что мне нужно, мне пришлось удалить 'umdDefineName', так что раздел AMD и CommonJS будет без имени. По какой-то причине CommonJS остается Webpack, но, к счастью, его игнорируют при импорте в Webpack или Rollup. Наконец, посмотрите, [как команда React делает это] (https://github.com/facebook/react/blob/046f7448d7224da5b33441248a32a319a6464bc5/grunt/config/browserify.js#L98). –