webpack5打包一个TS 库并发布到npm 一条龙实战教程(附模板代码)(1)

最后覆盖下package.json

在这里插入图片描述

四、 webpack 生成配置预览


整体目录:

在这里插入图片描述

自动生成了

  • tsconfig

  • postcss.config

  • webpack.config

重点关注webpack.config

webpack.config

// Generated using webpack-cli https://github.com/webpack/webpack-cli

const path = require(“path”);

const HtmlWebpackPlugin = require(“html-webpack-plugin”);

const isProduction = process.env.NODE_ENV == “production”;

const stylesHandler = “style-loader”;

const config = {

entry: “./src/index.ts”,

output: {

path: path.resolve(__dirname, “dist”),

},

devServer: {

open: true,

host: “localhost”,

},

plugins: [

new HtmlWebpackPlugin({

template: “index.html”,

}),

// Add your plugins here

// Learn more about plugins from https://webpack.js.org/configuration/plugins/

],

module: {

rules: [

{

test: /.(ts|tsx)$/i,

loader: “ts-loader”,

exclude: [“/node_modules/”],

},

{

test: /.less$/i,

use: [stylesHandler, “css-loader”, “postcss-loader”, “less-loader”],

},

{

test: /.css$/i,

use: [stylesHandler, “css-loader”, “postcss-loader”],

},

{

test: /.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,

type: “asset”,

},

// Add your rules for custom modules here

// Learn more about loaders from https://webpack.js.org/loaders/

],

},

resolve: {

extensions: [“.tsx”, “.ts”, “.js”],

},

};

module.exports = () => {

if (isProduction) {

config.mode = “production”;

} else {

config.mode = “development”;

}

return config;

};

配置内容:

  • HtmlWebpackPlugin

  • ts-loader

  • style-loader

  • css-loader

  • postcss-loader

  • less-loader

资源配置策略:

{

test: /.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,

type: “asset”,

},

现在,webpack 将按照默认条件,自动地在 resource 和 inline 之间进行选择:小于 8kb 的文件,将会视为 inline 模块类型,否则会被视为 resource 模块类型。

tsconfig

tsconfig 只是基础配置

{

“compilerOptions”: {

“allowSyntheticDefaultImports”: true,

“noImplicitAny”: true,

“module”: “es6”,

“target”: “es5”,

“allowJs”: true

},

“files”: [“src/index.ts”]

}

5、ts 声明文件没有产生处理


修改代码

在这里插入图片描述

export interface StudentProps {

name:string,

class:string

}

class Student {

name:string

class:string

constructor(std:StudentProps) {

this.name = std.name

this.class = std.class

}

}

export default Student

生成dist

执行一下,默认生成的脚本

“scripts”: {

“build”: “webpack --mode=production --node-env=production”,

“build:dev”: “webpack --mode=development”,

“build:prod”: “webpack --mode=production --node-env=production”,

“watch”: “webpack --watch”,

“serve”: “webpack serve”

}

yarn build

编译完之后发现没有ts声明文件

在这里插入图片描述

配置tsconfig 生成声明文件

我们需要声明文件,到dist 一起发版,所以需要配置下tsconfig

{

“compileOnSave”: false,

“compilerOptions”: {

“outDir”: “./dist/”,// 打包到的目录

“sourceMap”: false,// 是否生成sourceMap(用于浏览器调试)

“noImplicitAny”: false,

“noUnusedLocals”: true,

“noUnusedParameters”: true,

“declaration”: true,// 是否生成声明文件

“declarationDir”: “./dist/types/”,// 声明文件打包的位置

“declarationMap”: false,// 是否生成声明文件map文件(便于调试)

“moduleResolution”: “node”,

“module”: “esnext”,

“target”: “es5”,// 转化成的目标语言

“baseUrl”: “./”,

“types”: [

“node”

],

“typeRoots”: [

“./node_modules/@types”

],

“lib”: [

“dom”,

“es2015”

],

“jsx”: “react”,

“allowJs”: false

},

“include”: [

“src/**/*.ts”,

“typings.d.ts”,

],// 要打包的文件

“exclude”: [

“node_modules”,

“*.test.ts”

]

}

再执行打包命令,生成结果如下:

在这里插入图片描述

发布包到npm


指定npm 包上传内容

修改package.json 修改mainfiles ,新增 types字段。

具体配置如下:

{

“name”: “webpack5-ts-lib-boilerplate”,

“version”: “1.0.0”,

“description”: “My webpack project”,

“author”: “ZY”,

“license”: “MIT”,

“main”: “./dist/main.js”,

“types”: “./dist/types/index.d.ts”,

“files”: [

“dist”

],

“devDependencies”: {

“@webpack-cli/generators”: “^2.4.1”,

“autoprefixer”: “^10.4.2”,

“css-loader”: “^6.5.1”,

“html-webpack-plugin”: “^5.5.0”,

“less”: “^4.1.2”,

“less-loader”: “^10.2.0”,

“postcss”: “^8.4.5”,

“postcss-loader”: “^6.2.1”,

“prettier”: “^2.5.1”,

“style-loader”: “^3.3.1”,

“ts-loader”: “^9.2.6”,

“typescript”: “^4.5.4”,

“webpack”: “^5.66.0”,

“webpack-cli”: “^4.9.1”,

“webpack-dev-server”: “^4.7.3”

},

“scripts”: {

“build”: “webpack --mode=production --node-env=production”,

“build:dev”: “webpack --mode=development”,

“build:prod”: “webpack --mode=production --node-env=production”,

“watch”: “webpack --watch”,

“serve”: “webpack serve”

}

}

打包上传

npm 源切换到公有。执行npm publish 没有登录的记得登录,这个就不在这啰嗦。

在这里插入图片描述

发布成功可以查看地址:

https://www.npmjs.com/package/webpack5-ts-lib-boilerplate

在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
去过华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-50DzOXgO-1715708140384)]

[外链图片转存中…(img-TLXw3VGt-1715708140385)]

[外链图片转存中…(img-snrlAEKl-1715708140385)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值