2017-01-29 9 views
0

Я делаю свой проект vue-cli.Как заставить webpack генерировать js-файл с requirejs? Я использую vue-cli

vue init webpack vue-demo 
cd vue-demo 
npm install 
npm run dev 

Теперь я хочу devolop некоторые компоненты. И я хочу использовать их в requirejs. WebPack конфигурации

entry: { 
    app: './src/main.js' 
    }, 
    output: { 
    path: config.build.assetsRoot, 
    publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 
    filename: '[name].js', 
    libraryTarget: 'umd', 
    library:'senyint' 
    } 

Q1: Он генерирует три файла. app.js manifest.js vendor.js Демонстрация имеет Hello.vue. Я хочу, чтобы файл js запрашивал файл webpack. Но я требую их, это undefiend. Зачем? Что случилось? Где я должен экспортировать? Теперь я экспортирую в main.js вот так.

import Hello from 'components/Hello' 
    module.exports = { 
Hello 
} 

Q2: Я не хочу упаковывать без VUE. Так я настроить этот

externals: { 
    vue: 'vue' 
} 

Если я это сделать, когда НПМ запустить DEV показать ошибку «Uncaught TypeError: Не удается прочитать свойство„конфигурации“неопределенных» Это причина не могу найти Vue. Если я настраиваю внешние ключи, как это сделать?

ответ

0

Q1: Открыть JavaScript app.js файл я нашел

define("senyint", ["vue"], factory); 

на этой линии. «Senyint» - это имя пакета, webpack генерирует js, но он не работает. я изменить код, как это

define(["vue"], factory); 

Требовать его, и он работает. Но я не знаю, почему ... Я просто могу решить эту проблему; main.js экспорт .vue компоненты

import Hello from 'components/Hello.vue' 

export const scom = { 
    Hello 
} 

requirejs конфиг

requirejs.config({ 
    baseUrl: 'js/common', 
    paths: { 
    module: '../modules' 
    }, 
    shim: { 
    app: { 
     deps:['vue','manifest','vendor'] 
    } 
    } 
}) 

requirejs(['module/demo', 'app'], function (demojs, app) { 
    debugger 
    console.log(app) 
}) 

Q2: Я построил свой проект с вю-кли шаблон WebPack. (Не WebPack-простой) В каталоге сборки имеет 'webpack.base.conf.js' и Изменить webpack.prod.conf.js 'webpack.prod.conf.js' добавить

externals: { 
    vue: { 
     root: 'Vue', 
     commonjs: 'vue', 
     commonjs2: 'vue', 
     amd: 'vue' 
    } 
    }, 

И не добавить код в 'webpack.base.conf.js'. Затем, после запуска npm, он будет пакет без vue.js .Npm запустите dev, используя webpack.base.conf.js, он будет работать с vue