【问题标题】:How to configure rollup with Vue?如何使用 Vue 配置汇总?
【发布时间】:2018-07-03 20:43:04
【问题描述】:

我正在使用 Vue.js 进行项目,与 Rollup 捆绑在一起。

这是我的rollup.config.js 文件

import vue from 'rollup-plugin-vue2'
import less from 'rollup-plugin-less2';
import buble from 'rollup-plugin-buble'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'
import uglify from 'rollup-plugin-uglify'
import livereload from 'rollup-plugin-livereload'
import serve from 'rollup-plugin-serve'

const plugins = [
    vue({'css':'none'}),
    less({output: "dist/build.css"}),
    buble({exclude: 'node_modules/**'}),
    nodeResolve({browser: true, jsnext: true}),
    commonjs()
]

if (process.env.NODE_ENV === 'production') {
    plugins.push(uglify())
}

if (process.env.NODE_ENV === 'development') {
    plugins.push(livereload('dist'))
    plugins.push(serve({
        contentBase: "",
        open: true
    }))
}

export default {
    input: 'src/main.js',
    output: {
        file: 'dist/build.js',
        format: 'iife',
        sourcemap: true,
        //external: ["vue","vue-router"],
    },
    //external: ["vue","vue-router"],
    plugins
}

这是我的main.js 文件。

import Vue from 'vue'
import App from './App.vue'
import VueRouter from "vue-router";

Vue.use(VueRouter);

const Foo = {template: '<div>foo</div>'}
const Bar = {template: '<div>bar</div>'}

const routes = [
    {path: '/foo', component: Foo},
    {path: '/bar', component: Bar}
];

const router = new VueRouter({
    routes
});

var app = new Vue({
    router: router,
    el: '#app',
    render: h => h(App)
});

运行项目后出现此错误

未捕获的引用错误:未定义进程

如果我使用 Vue 作为外部库并取消注释这个 ["vue","vue-router"], external: ["vue","vue-router"] 一切正常。

如何使我的项目编译并使用rollup

【问题讨论】:

    标签: javascript vue.js rollupjs


    【解决方案1】:

    我遇到了同样的问题。在这里找到了解决方案:https://github.com/rollup/rollup/issues/487

    您必须使用汇总替换插件来替换所有导入文件中对 process.env.NODE_ENV 的所有调用,如下所示:

    plugins: [
      replace({
        'process.env.NODE_ENV': JSON.stringify( 'production' )
      })
    ]
    

    【讨论】:

    • 为什么是JSON.stringify( 'production' )?写'"production"'
    • 这个字符串会保存在源代码中,而不是动态编辑,所以更安全
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2023-03-03
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多