使用typescript开发Vue组件库

風灬雲 2019-09-08 10:44:08
自己用typescript开发一个vue的组件库,使用vue-cli3.0搭建的工程;开发完成后打包引用出现了一点问题,求大神指点
vue.config.js

var path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const nodeExternals = require('webpack-node-externals');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const WebpackStringReplacePlugin = require('webpack-string-replace-plugin');
module.exports = {
configureWebpack: {
devtool: 'source-map',
mode: "development",
// mode: "production",
entry: './src/main.ts',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'test.js',
libraryTarget: 'commonjs2',
},
externals: [nodeExternals()],
plugins: [
new MiniCssExtractPlugin({
filename: "test.css"
}),
new CopyWebpackPlugin([{
from: 'src/assets',
to: 'assets'
}]),
new WebpackStringReplacePlugin([{
file: 'test.css',
match: /url\(\.\.\/img/g,
replacement: function (match) {
return 'url(/img';
}
}])
],
resolve: {
alias: {}
},
module: {
rules: [{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}],
},
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true
}
}
},
},
},
chainWebpack: config => {
config.optimization.delete('splitChunks');
}
}

main.ts


import Vue from 'vue';
import Home from './views/Home.vue'

console.log(Home);
const PageMap: Map<string, any> = new Map();
PageMap.set('test', Home);
const install = (vue: any) => {
PageMap.forEach((val: any, key: string) => {
console.log(val);
vue.component(key, val);
});
};

export default {
install
};
export {PageMap}


package.json

{
"name": "mytest",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^2.6.5",
"element-ui": "^2.12.0",
"vue": "^2.6.10",
"vue-class-component": "^7.0.2",
"vue-property-decorator": "^8.1.0",
"vue-router": "^3.0.3"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.11.0",
"@vue/cli-plugin-typescript": "^3.11.0",
"@vue/cli-service": "^3.11.0",
"sass": "^1.18.0",
"sass-loader": "^7.1.0",
"typescript": "^3.4.3",
"vue-template-compiler": "^2.6.10",
"webpack-node-externals": "1.7.2",
"webpack-string-replace-plugin": "1.0.0"
},
"main": "dist/test.js"
}



现在的问题是,打包后 通过别的项目引用,如果是TS的项目引用,"main": "dist/test.js"改为"main": "src/main.ts",一切都正常;但是JS的项目引用"main": "dist/test.js",既不报错也没内容,

打印内容JS项目和TS项目的东西一致,但是打印import vue文件的结果却不一样

现在相当于这个插件只能应用于typescript 的vue项目,JS的项目无法使用
...全文
71 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧