2017-01-29 97 views
0

我通過vue-cli製作了我的項目。如何使用requirejs生成js文件?我使用vue-cli

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

現在我想devolop一些組件。我想在requirejs中使用它們。 webpack config

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。我想要通過webpack生成的js文件。 但我需要他們,這是不友好的。爲什麼?什麼是錯的? 我應該在哪裏出口? 現在我像這樣在main.js中導出。

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

Q2:我不想包裝沒有vue。 所以我配置此

externals: { 
    vue: 'vue' 
} 

如果我這樣做,當NPM運行dev的顯示錯誤「遺漏的類型錯誤:無法讀取的未定義的屬性‘配置’」 它,因爲無法找到Vue公司。 如果我配置外部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: 我建造我的項目與VUE-CLI的WebPack模板。 (沒有的WebPack-簡單) 在build目錄具有 '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運行