使用typescript开发Vue组件库
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的项目无法使用
相关推荐
基于Vue3和TypeScript开发的现代化UI组件库_包含Switch按钮对话框标签页等多种交互组件_主要用于前端开发者学习Vue3和TypeScript技术_也可作为小型项目.zip
基于Vue3和TypeScript开发的现代化UI组件库_包含Switch按钮对话框标签页等多种交互组件_主要用于前端开发者学习Vue3和TypeScript技术_也可作为小型项目.zip
基于Vuejs前端框架与TypeScript强类型语言结合ElementUI组件库并通过Electron实现跨平台桌面应用集成的Windows应用程序开发脚手架_该项目是一个专门.zip
基于Vuejs前端框架与TypeScript强类型语言结合ElementUI组件库并通过Electron实现跨平台桌面应用集成的Windows应用程序开发脚手架_该项目是一个专门.zip
TMUI320是一个基于Vue3和TypeScript构建的专注于现代跨平台小程序和Web应用开发的免费开源且持续维护的高质量前端UI组件库与开发框架_它提供了丰富且遵循M.zip
TMUI320是一个基于Vue3和TypeScript构建的专注于现代跨平台小程序和Web应用开发的免费开源且持续维护的高质量前端UI组件库与开发框架_它提供了丰富且遵循M.zip
基于Vuejs与TypeScript和JavaScript混合编程模式构建的面向大数据可视化场景的跨设备全尺寸自适应前端基础开发框架模板_集成data-V大数据可视化组件库并内置.zip
基于Vuejs与TypeScript和JavaScript混合编程模式构建的面向大数据可视化场景的跨设备全尺寸自适应前端基础开发框架模板_集成data-V大数据可视化组件库并内置.zip
基于Vuejs与TypeScript构建的移动端应用开发模板_包含VantUI组件库_axios网络请求封装_vuex状态管理_骨架屏加载效果_响应式布局适配方案_前端工程化最佳.zip
基于Vuejs与TypeScript构建的移动端应用开发模板_包含VantUI组件库_axios网络请求封装_vuex状态管理_骨架屏加载效果_响应式布局适配方案_前端工程化最佳.zip


