Jon*_*Sud 7 typescript webpack babeljs
我创建了一个 lerna monorepo (nodejs 包),并尝试使用 babel 和 webpack 编译我的打字稿文件。
在我的项目中,我有两个主要文件夹:应用程序和包。
我在 packages/package1 中运行构建lerna run build。package1 中的构建脚本是webpack.
在 package1 里面我有一些文件:
webpack.config.js:
const path = require('path');
const root = (p) => path.resolve(__dirname, '../..', p);
const isProd = process.env.NODE_ENV === 'production';
module.exports = {
entry: {
app: './app.ts',
},
output: {
filename: '[name].js',
},
target: 'node',
node: {
__dirname: false,
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
},
},
],
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
alias: {
'@packages/*': root('packages/*/src'),
},
}
};
Run Code Online (Sandbox Code Playgroud)
babel.config.js:
module.exports = {
presets: [
[
'@babel/preset-env',
{
targets: {
browsers: ['last 2 versions', 'safari >= 7'],
},
},
],
'@babel/preset-typescript',
],
plugins: ['@babel/plugin-proposal-export-default-from'],
};
Run Code Online (Sandbox Code Playgroud)
tsconfig.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"module": "esnext",
"strict": false,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"target": "esnext",
"noImplicitAny": false,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"lib": ["esnext", "dom"],
"types": ["webpack-env", "node","jest"]
}
}
Run Code Online (Sandbox Code Playgroud)
在项目的根目录中我有 tsconfig.json:
tsconfig.json:
{
"compilerOptions": {
"noEmit": true,
"strict": true,
"jsx": "react",
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"esModuleInterop": true,
"removeComments": true,
"rootDir": ".",
"baseUrl": ".",
"paths": {
"@packages/*": ["packages/*/src"],
"*": ["node_modules", "packages"]
}
},
"include": ["packages", "jest-dom/extend-expect"],
"exclude": ["node_modules", "dist"]
}
Run Code Online (Sandbox Code Playgroud)
问题是,babel/webpack 抛出错误:
Module not found: Error: Can't resolve '@packages/foo'
Run Code Online (Sandbox Code Playgroud)
当然,我的文件指向正确的位置(索引等)。
可能是什么问题呢?
更新
我在 webpack 中添加了别名部分,但它不起作用:
alias: {
'@packages/*': root('packages/*/src'),
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3611 次 |
| 最近记录: |