好吧,我觉得有点笨,但另一方面,这似乎没有得到很好的记录。
事实证明,如果您的webpack和tsconfig都设置为编译/构建到同一目录中,并且tsconfig设置为发出声明,并且您的webpack库设置为指向与package.json中的主条目(例如index.js)相同的入口点,则它将正常工作。
所以--
package.json:
//excerpt
"main": "lib/index.js",
"types": "lib/index.d.ts",
"scripts": {
"build": "rimraf ./lib && webpack"
},
tsconfig.json
//excerpt
"compilerOptions": {
"outDir": "lib",
"declaration": true
}
webpack.config.js
const path = require("path");
module.exports = {
entry: "./src/index.ts",
mode: "development",
module: {
rules: [
{
test: /\.svg$/i,
issuer: /\.[jt]sx?$/,
use: [{ loader: "@svgr/webpack", options: { typescript: true } }],
},
{
test: /\.s[ac]ss$/i,
use: ["style-loader", "css-loader", "sass-loader"],
},
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".js"],
},
output: {
filename: "index.js",
path: path.resolve(__dirname, "lib"),
library: {
name: "my-icons",
type: "umd",
},
},
};
工作示例在
this repo
.就这么做吧
npm install && npm run build