打字稿和网页包
Typescript and webpack
我在使用 webpack 和 typescript 时遇到了一些困难。我项目中的不同文件夹中有许多 .ts 文件。早些时候我没有使用像 commonjs 或 AMD 这样的模块系统,而是使用了 typescript 命名空间(module 关键字)。这些文件没有连接成一个文件。这意味着在每个 .ts 文件附近生成 .js 文件,然后所有 .js 文件都包含在 HTML.
中
现在尝试使用webpack和ts-loader
module.exports = {
context: __dirname,
entry: "app.ts",
output: {
path: __dirname,
filename: 'bundle.js'
},
resolve: {
root: __dirname,
extensions: ["", ".webpack.js", ".web.js", ".js",".ts", ".tsx"]
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: 'ts-loader'
}
]
}
}
在bundle.js文件中编译后,我只能找到app.ts编译的内容,而没有找到所有其他文件。据我了解,这是因为我没有使用 import 关键字。 Webpack ts-loader 只编译那些模块文件。如果我启动打字稿编译器,它将像之前一样编译我项目中的所有文件。
问题是:如何添加 bundle.js 所有打字稿文件,即使它们不是 commonjs 模块?
谢谢
不确定您能否获得不使用 CJS 或 UMD 的模块,但也许我不理解这个问题?如果您只想连接和捆绑您的 ts、tsx 文件而不考虑导入和基于扩展名,您可以将 ExtractTextPlugin 与相应的加载器一起使用。这样的事情可能会奏效。
module: {
loaders: [
{
test: /\.tsx?$/,
loader: ExtractTextPlugin.extract('ts-loader')
}
]
},
plugins: [
new ExtractTextPlugin('typescript.[chunkhash].js', {
disable: false,
allChunks: true // extract all ts
}),
我猜你实际上并不需要 webpack。您可以简单地用 "files" 属性 定义 tsconfig.json,然后 "tsc" 应该完成您需要的所有工作。
{
"compilerOptions": {
"target": "es6",
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"allowJs": true,
"outDir": "build"
},
"exclude": ["node_modules"],
"files": ["typings/index.d.ts", "entry.ts", "file1.ts", "file2.ts" , .... ]
}
您还可以将 "compilerOptions.module" 配置为 "amd"、"none"、"umd"、"commonjs" ... 以设置模块加载。
我在使用 webpack 和 typescript 时遇到了一些困难。我项目中的不同文件夹中有许多 .ts 文件。早些时候我没有使用像 commonjs 或 AMD 这样的模块系统,而是使用了 typescript 命名空间(module 关键字)。这些文件没有连接成一个文件。这意味着在每个 .ts 文件附近生成 .js 文件,然后所有 .js 文件都包含在 HTML.
中现在尝试使用webpack和ts-loader
module.exports = {
context: __dirname,
entry: "app.ts",
output: {
path: __dirname,
filename: 'bundle.js'
},
resolve: {
root: __dirname,
extensions: ["", ".webpack.js", ".web.js", ".js",".ts", ".tsx"]
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: 'ts-loader'
}
]
}
}
在bundle.js文件中编译后,我只能找到app.ts编译的内容,而没有找到所有其他文件。据我了解,这是因为我没有使用 import 关键字。 Webpack ts-loader 只编译那些模块文件。如果我启动打字稿编译器,它将像之前一样编译我项目中的所有文件。
问题是:如何添加 bundle.js 所有打字稿文件,即使它们不是 commonjs 模块? 谢谢
不确定您能否获得不使用 CJS 或 UMD 的模块,但也许我不理解这个问题?如果您只想连接和捆绑您的 ts、tsx 文件而不考虑导入和基于扩展名,您可以将 ExtractTextPlugin 与相应的加载器一起使用。这样的事情可能会奏效。
module: {
loaders: [
{
test: /\.tsx?$/,
loader: ExtractTextPlugin.extract('ts-loader')
}
]
},
plugins: [
new ExtractTextPlugin('typescript.[chunkhash].js', {
disable: false,
allChunks: true // extract all ts
}),
我猜你实际上并不需要 webpack。您可以简单地用 "files" 属性 定义 tsconfig.json,然后 "tsc" 应该完成您需要的所有工作。
{
"compilerOptions": {
"target": "es6",
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"allowJs": true,
"outDir": "build"
},
"exclude": ["node_modules"],
"files": ["typings/index.d.ts", "entry.ts", "file1.ts", "file2.ts" , .... ]
}
您还可以将 "compilerOptions.module" 配置为 "amd"、"none"、"umd"、"commonjs" ... 以设置模块加载。