Webpack ts-loader : 更改 tsconfig 文件名
Webpack ts-loader : change tsconfig filename
我有 2 个 tsconfig,一个用于我的开发构建,一个用于我的生产构建。
我选择带有 -p
标志的 tsconfig :
tsc -p dev.tsconfig.json
Ts-loader 正在寻找 tsconfig.json 文件。如何使用 ts-loader 指定另一个文件名?
module.exports = {
entry : __dirname + "/src/app/main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".webpack.js", ".web.js", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts" }
]
}
};
Update (Webpack 4):如评论中所述,语法已更改,如 .
中所引用
Webpack 使我们能够为每个加载器添加自定义选项。所有 ts-loader
配置属性都在 here.
中进行了描述
configFileName
就是您正在寻找的属性。应该是这样的。
module.exports = {
entry : __dirname + "/src/app/main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".webpack.js", ".web.js", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts" }
]
},
ts: {
configFileName : 'dev.tsconfig.json'
}
};
2017 年 9 月 6 日更新
configFileName
已被弃用,取而代之的是 configFile
- Source
尝试在加载程序名称后使用 configFile 作为查询字符串。这里是webpack config and ts-loader's config
module.exports = {
entry : "./main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts-loader?configFile=src/tsconfig.server.json" }
]
},
};
以下是如何指定 configFile
(以前是 configFileName
,正如 Frank 所说),截至 2017 年 12 月 (Webpack 3.10.0)。
Webpack 配置
注意: Since version 2,Webpack 一直使用 module.rules
而不是 module.loaders
,并且不赞成使用查询参数一个 options
对象。
module.exports = {
entry: {
"./build/bundle" : "./src/startup/Entry.ts"
},
output: {
filename: '[name].js',
libraryTarget: 'this'
},
devtool: 'source-map',
resolve: {
modules: [".", "node_modules"],
extensions: [".js", ".webpack.js", ".web.js", ".d.ts", ".ts", ".tsx"]
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: [/node_modules/],
loader: "ts-loader",
options: {
configFile: "webpack_configs/tsconfig.webpack.json"
}
}
]
},
plugins: []
};
目录结构
我的根目录结构如下:
webpack.config.js
webpack_configs/tsconfig.webpack.json
tsconfig.json
package.json
src/*
test/*
node_modules/*
build/*
... 其中*
表示多个文件。
打字稿配置
tsconfig.webpack.json
本身只是通过排除 test
文件夹来扩展我的通用 tsconfig.json
:
{
"extends": "../tsconfig",
"exclude": [
"node_modules",
"test"
]
}
... 但是你不需要两个 webpack 配置来受益于 configFile
设置;您可以简单地使用它从自定义位置定位您的单数 tsconfig.json
。
在 Webpack 4 中,您需要将选项指定到 use
对象中:
use: [{
loader: 'ts-loader',
options: {
configFile: "tsconfig.webpack.json"
}
}]
完成 Webpack 配置:
var path = require('path');
module.exports = {
entry: path.resolve(__dirname, 'src') + '/index.ts',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'your-library-name.js',
},
module: {
rules: [
{
test: /\.ts$/,
use: [{
loader: 'ts-loader',
options: {
configFile: "tsconfig.webpack.json"
}
}],
exclude: /node_modules/,
}
]
},
mode: 'development',
resolve: {
extensions: ['.js', '.ts']
},
devtool: false
};
更多如下:
{
test: /\.tsx?$/,
loader: 'ts-loader',
options: {configFile: 'tsconfig.webpack.json'}
}
https://www.npmjs.com/package/ts-loader#configfile-string-defaulttsconfigjson
我有 2 个 tsconfig,一个用于我的开发构建,一个用于我的生产构建。
我选择带有 -p
标志的 tsconfig :
tsc -p dev.tsconfig.json
Ts-loader 正在寻找 tsconfig.json 文件。如何使用 ts-loader 指定另一个文件名?
module.exports = {
entry : __dirname + "/src/app/main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".webpack.js", ".web.js", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts" }
]
}
};
Update (Webpack 4):如评论中所述,语法已更改,如
Webpack 使我们能够为每个加载器添加自定义选项。所有 ts-loader
配置属性都在 here.
configFileName
就是您正在寻找的属性。应该是这样的。
module.exports = {
entry : __dirname + "/src/app/main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".webpack.js", ".web.js", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts" }
]
},
ts: {
configFileName : 'dev.tsconfig.json'
}
};
2017 年 9 月 6 日更新
configFileName
已被弃用,取而代之的是 configFile
- Source
尝试在加载程序名称后使用 configFile 作为查询字符串。这里是webpack config and ts-loader's config
module.exports = {
entry : "./main.ts",
output : {
path : __dirname + "/dist",
filename : "bundle.js"
},
resolve : {
extensions : ["", ".js", ".ts"]
},
module: {
loaders: [
{ test: /\.ts?$/, loader: "ts-loader?configFile=src/tsconfig.server.json" }
]
},
};
以下是如何指定 configFile
(以前是 configFileName
,正如 Frank 所说),截至 2017 年 12 月 (Webpack 3.10.0)。
Webpack 配置
注意: Since version 2,Webpack 一直使用 module.rules
而不是 module.loaders
,并且不赞成使用查询参数一个 options
对象。
module.exports = {
entry: {
"./build/bundle" : "./src/startup/Entry.ts"
},
output: {
filename: '[name].js',
libraryTarget: 'this'
},
devtool: 'source-map',
resolve: {
modules: [".", "node_modules"],
extensions: [".js", ".webpack.js", ".web.js", ".d.ts", ".ts", ".tsx"]
},
module: {
rules: [
{
test: /\.tsx?$/,
exclude: [/node_modules/],
loader: "ts-loader",
options: {
configFile: "webpack_configs/tsconfig.webpack.json"
}
}
]
},
plugins: []
};
目录结构
我的根目录结构如下:
webpack.config.js
webpack_configs/tsconfig.webpack.json
tsconfig.json
package.json
src/*
test/*
node_modules/*
build/*
... 其中*
表示多个文件。
打字稿配置
tsconfig.webpack.json
本身只是通过排除 test
文件夹来扩展我的通用 tsconfig.json
:
{
"extends": "../tsconfig",
"exclude": [
"node_modules",
"test"
]
}
... 但是你不需要两个 webpack 配置来受益于 configFile
设置;您可以简单地使用它从自定义位置定位您的单数 tsconfig.json
。
在 Webpack 4 中,您需要将选项指定到 use
对象中:
use: [{
loader: 'ts-loader',
options: {
configFile: "tsconfig.webpack.json"
}
}]
完成 Webpack 配置:
var path = require('path');
module.exports = {
entry: path.resolve(__dirname, 'src') + '/index.ts',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'your-library-name.js',
},
module: {
rules: [
{
test: /\.ts$/,
use: [{
loader: 'ts-loader',
options: {
configFile: "tsconfig.webpack.json"
}
}],
exclude: /node_modules/,
}
]
},
mode: 'development',
resolve: {
extensions: ['.js', '.ts']
},
devtool: false
};
更多如下:
{
test: /\.tsx?$/,
loader: 'ts-loader',
options: {configFile: 'tsconfig.webpack.json'}
}
https://www.npmjs.com/package/ts-loader#configfile-string-defaulttsconfigjson