Xuxicheta
@Xuxicheta
инженер

Как собрать Vue в виде dll с глобальной областью видимости?

конфиг такой
// vendor.webpack.config.js
const path = require('path');
const webpack = require('webpack');

module.exports = {
	entry: {
		vendor: [
			'vue/dist/vue.js',
			'jquery',
		],
	},
	output: {
		path: path.join(__dirname, 'public'),
		filename: '[name].bundle.js',
		library: 'vendor_lib',
	},
	module: {
		noParse: /node_modules/,
	},
	plugins: [
		new webpack.DllPlugin({
			context: path.join(__dirname, 'public'),
			name: "[name]_[hash]",
			path: path.join(__dirname, 'public', 'vendor-manifest.json'),
		}),
		new webpack.ProvidePlugin({
			'Vue': 'vue/dist/vue.js',
			'$': 'jquery',
		}),
	],
};


После сборки jQuery доступен по $, а Vue нет.
С axios так же, тоже недоступен.

И еще непонятно: пробовал разные файлы из vue/dist, без ошибок собираются только vue.js, vue.common.js и vue.runtime.common.js.
Если указать просто 'vue' то в сборку идет vue.runtime.esm.js, который вызывает ошибку "SyntaxError: export declarations may only appear at top level of a module"
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 2
Xuxicheta
@Xuxicheta Автор вопроса
инженер
В общем наклепал некоторый каркас как собрать Vue и некоторые дополнения в виде dll.
https://github.com/xuxicheta/webpack-dll-vue-plus
В глобал вписываю их насильно, нужны только для консоли, потом можно убрать в продакшн.

Но это как-то криво, ProvidePlugin я так и не понял как работает в этом случае.
Ответ написан
Комментировать
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
resolve: {
    alias: {
        'vue$': 'vue/dist/vue.esm.js',
    },
}

https://webpack.js.org/configuration/resolve/#reso...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы