2015-03-27 7 views
16

Webpack включает AMDPlugin по умолчанию, поэтому, если модуль проверяет AMD перед CommonJS, это определение модуля будет использоваться.Есть ли способ отключить AMDPlugin?

if (typeof define === 'function' && define.amd) { 
    define([], factory) 
} else if (typeof exports === 'object') { 
    exports.foo = factory(); 
} 

Я хотел бы вообще игнорировать AMD. Есть ли способ сделать это в webpack?

+1

Решения: 'модуль: { погрузчиков: [ {тест: /\.js/, погрузчик:? Импорт определить => лжи '} ] }' –

+1

Иногда определение AMD просто не хватает некоторые структуры каталогов. В этом случае вы можете добавить отсутствующий путь к 'resolve: {fallback: [...]}' и разрешить веб-пакет решить их. Дополнительный загрузчик не требуется. – Rockallite

+0

@WiktorKozlik, пожалуйста, добавьте свое решение в качестве фактического решения, чтобы его было легче увидеть. –

ответ

15

Она может быть решена с imports-loader

Есть много модулей, которые проверяют для функции определения перед использованием CommonJS. Поскольку webpack способен на оба, они по умолчанию AMD в этом случае, что может быть проблемой, если реализация является изворотливой. Затем вы можете легко отключить путь AMD написав

imports?define=>false

Просто сделать

require('imports?define=>false!myjsfile.js') 

ИЛИ Лучший подход в webpack.config.js добавить загрузчик

loaders: [ { test: /myjsfile.js/, loader: 'imports?define=>false'} ] 
+0

Как это сделать, когда у вас есть несколько файлов (четыре, если быть точным), и один из них должен быть загружен перед другим 3, потому что они зависят от него. – codepreneur

+0

@codepreneur просто требует их в правильном порядке. require ('import? Define => false! File1.js'); require ('import? Define => false! File2.js'); require ('import? Define => false! File3.js'); – kucherenkovova

+0

Я сделал, и это не сработало: http://stackoverflow.com/questions/41488225/how-to-disable-amd-on-4-files-and-load-them-in-order-with-webpack? noredirect = 1 # comment70182681_41488225 – codepreneur

0

Также рассмотреть script-loader, как уже упоминалось в конце Shimming documentation:

скрипт-погрузчик оценивает код в глобальном контексте, подобно включения с помощью тега сценария. В этом режиме каждая нормальная библиотека должна работать . требуется, модуль и т. Д. Не определены.

Смежные вопросы