我们先讲讲 roll-plugin-node-resolve
这个插件
我们先安装一个插件 async-validator
,这个插件的作用其实就是 element-ui
中的 form
的校验插件
npm install async-validator@1.8.1
更改
src => index.js
// src/index.js
import Schema from 'async-validator';
export default Schema
运行 npm run dev
新建
dist => index.html
<body>
<script src="./lib-es.js">script>
<script type="module">
import Schema from './lib-es.js'
console.log(Schema)
script>
body>
打开后发现
这个时候我们打开我们的打包文件 dist => lib-es.js
, 发现
import Schema from 'async-validator';
export { default } from 'async-validator';
emmm… 我们的 async-validator
这个插件到哪去了。。。
rollup-plugin-node-resolve 和 rollup-plugin-commonjs 的安装
前面一张说过 rollup
并不支持直接打包 node-modules
里面的内容,所以我们需要安装 rollup-plugin-node-resolve
为什么安装 commonjs
这个插件呢,因为 async-validator
其实是 commonjs
语法 , 大家可以不安装这个插件去跑下待会的 代码
// async-validator.js 部分源码
// async-validator/lib/index.js
...
Schema.register = function register(type, validator) {
if (typeof validator !== 'function') {
throw new Error('Cannot register a validator by type, validator is not a function');
}
_validator2['default'][type] = validator;
};
Schema.messages = _messages2.messages;
exports['default'] = Schema;
module.exports = exports['default'];
npm install rollup-plugin-node-resolve rollup-plugin-commonjs rollup-plugin-replace -D
其中 rollup-plugin-replace
为了更改 rollup
的环境变量,大伙也可以不加试一试,如果不加会提示 process is no defied
rollup 打包 process is process is not defined
更改
rollup-config.js
// rollup.config.js
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import replace from 'rollup-plugin-replace';
export default {
input: './src/index.js',
output: [
{
file: './dist/lib-es.js',
format: 'es',
},
],
plugins: [
commonjs(),
resolve(),
replace({
'process.env.NODE_ENV': JSON.stringify('development'),
'process.env.VUE_ENV': JSON.stringify('browser'),
}),
],
};
更改
dist => index.html
<body>
<script src="./lib-es.js"></script>
<script type="module">
import Schema from './lib-es.js';
let decription = new Schema({
name: [{ required: true, type: 'string', message: '请输入姓名' }],
});
// [ { message: '请输入姓名', field: 'name' } ]
decription.validate({ name: '' }, (error) => {
console.log(error);
});
</script>
</body>
运行 npm run dev
, 打开浏览器发现导入已经成功
本章主要讲解 rollup
中两个插件,这两个插件对下来我们将 rollup-plugin-vue
有很大的帮助