手写Vue核心原理系列—Rollup搭建开发环境

550 阅读1分钟

1.初始化,生成package.json文件

npm init

2.安装babel相关插件

npm install rollup rollup-plugin-babel @babel/core @babel/preset-env rollup-plugin-serve -D

3.新建文件rollup.config.js

rollup.config.js

// 引入babel/serve
import babel from 'rollup-plugin-babel';
import serve from 'rollup-plugin-serve';


export default {
    input: './src/index.js', // 入口文件
    output: {
        // 模块化的类型 
        format: 'umd',
        name: 'Vue', // 全局变量名
        file: 'dist/umd/vue.js',
        sourcemap: true
    },
    plugin: [
        babel({
            exclude: 'node_modules/**'
        }),
        serve({
            port: 3000, // 端口号
            contentBase: '', 
            openPage: '/index.html' // 打开的文件
        })
    ]
}

4.新建babelrc文件(也可直接在config文件下写)、package.json中配置运行命令

.babelrc文件
{
    "presets": [
        "@babel/presets-env"
    ]
}
package.json
"scripts": {
    "dev": "rollup -c -w"
  },

5.测试(新建src目录并新建index.js文件,写一个fn方法)

index.js 测试方法fn
export const fn = () => {
	
}

6.运行命令 npm run dev

执行后会得到这些(先不管)
rollup v2.39.1
bundles ./src/index.js → dist\umd\vue.js...
created dist\umd\vue.js in 13ms

[2021-02-23 18:12:11] waiting for changes...

7.回到项目中,会多出dist文件夹,打开vue.js

(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
	typeof define === 'function' && define.amd ? define(['exports'], factory) :
	(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Vue = {}));
}(this, (function (exports) { 'use strict';
	// 我们可以看到 fn 方法被打包过来了 说明测试成功了
	const fn = () => {

	};

	exports.fn = fn;

	Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=vue.js.map

8.测试用浏览器打开localhost:3000

新建index.html

忽略原始代码~  写一个hello (浏览器打开localhost:3000,能否展示hello)

测试完成,能展示的~