2015-05-13 1 views
1

Мы фактически переходим от RequireJS к Webpack, чтобы иметь возможность переключаться на модули CommonJS вместо AMD без необходимости реорганизации всего одновременно.Webpack с AMD, генерирующий один файл

Мы используем Almond с RequireJS, что позволило нам сгенерировать один файл .js, который использовали наши клиенты.

Мы хотим сделать то же самое с Webpack, но на самом деле он генерирует два актива, один из которых вызывает вызов JSONP для асинхронного загрузки другого актива.

Мы получили, как:

  • 1.bundle.js
  • bundle.js

bundle.js файл делает запрос JSONP загрузить 1.bundle.js файл, но это не то, что мы хотим сделать. Нам нужен отдельный автономный файл.

Возможно ли создать только один файл .js?

Вот моя конфигурация веб-пакета, обратите внимание, что мы используем задачу grunt-webpack внутри нашего файла Gruntfile.coffee.

entry: './app/pack.coffee' 
target: 'web' 
output: 
    path: '.webpack/' 
    filename: 'app.js' 
resolve: 
    root: path.resolve './app' 
    alias: 
    'underscore': path.resolve './vendors/underscore.js' 
    'backbone': path.resolve './vendors/backbone/backbone.js' 
    'accounting': path.resolve './vendors/accounting.js' 
    'moment': path.resolve './vendors/moment.js' 
    'tipsy': path.resolve './vendors/jquery.tipsy.js' 
    'json2': path.resolve './vendors/json2.js' 
    'backbone.wreqr': path.resolve './vendors/backbone.wreqr/lib/backbone.wreqr.js' 
    'backbone.babysitter': path.resolve './vendors/backbone.babysitter/lib/backbone.babysitter.js' 
    'backbone.marionette': path.resolve './vendors/marionette/lib/backbone.marionette.js' 
    'backbone.syphon': path.resolve './vendors/backbone.syphon.js' 
    'backbone.paginator': path.resolve './vendors/backbone.paginator.js' 
    'backbone.routefilter': path.resolve './vendors/routefilter/src/backbone.routefilter.js' 
module: 
    loaders: [ 
    { test: /\.coffee$/, loader: "coffee-loader" }, 
    { test: /\.html/, loader: "raw-loader" }, 
    { test: /\.(coffee\.md|litcoffee)$/, loader: "coffee-loader?literate" } 
    ] 
plugins: [ 
    new webpack.optimize.LimitChunkCountPlugin 
    maxChunks: 1 
] 

UPDATE

Использование в LimitChunkCountPlugin, кажется, сделать трюк! Не знаю, создает ли Webpack несколько кусков, когда ваш сгенерированный файл является большим для целей оптимизации.

ответ

0

Использование LimitChunkCountPlugin похоже, делает трюк! Не знаю, создает ли Webpack несколько кусков, когда ваш сгенерированный файл является большим для целей оптимизации.

Пожалуйста, ознакомьтесь с обновлением в исходном вопросе, чтобы узнать, как я его включил.

+0

Я хочу сделать то же самое, но я не уверен, почему он все еще не связывает до одного файла. Как вы думаете, вы можете вставить часть вашего файла 'app/pack.coffee'? Я мог бы делать что-то другое, чем вы. Благодаря ! –

+0

Я обновил свой оригинальный вопрос с использованием 'LimitChunkCountPlugin'. Я просто добавил его, и это сработало. –