NodeJS + TypeScript + Webpack4:访问非Web NodeJS应用程序的Webpack应用程序变量

时间:2018-11-06 03:38:43

标签: javascript node.js typescript webpack

因为我不想使用多个输出文件(已编译的TypeScript文件),所以我考虑在非Web NodeJS应用程序中使用 webpack 。如果仅通过 Webpack Dependency 类在 node_modules / some_dependency / index.ts 下构建,则它在 index.babel.js中将不可用,因为默认情况下,webpack应用程序没有全局变量。

index.babel.js

require('@babel/register');

// node_modules/some_dependency/index.js (compiled TypeScript)
import Dependency form 'dependency'; // Error!

new Dependency(); 

node_modules / some_dependency / index.ts

export default class Dependency() {
   // ---
}

如果仅使用ProvidePlugin,NodeJS模块( index.babel.js )是否可以看到Dependency

1 个答案:

答案 0 :(得分:0)

最小的 webpack.confing.js 将是:

module.exports = {
  entry: './TypeScriptSource/index.ts',
  output: {
    filename: 'index.js',
    path: __dirname,
    libraryTarget: 'umd'
  },
  target: 'node',
  module: {
    rules: [
      {
        test: /\.ts?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js']
  }
};

现在,如果Dependency中的类TypeScriptSource/index.ts具有export default,则index.babel.js中的以下代码将起作用:

require('@babel/register');

import Dependency from 'some-depencency';
new Dependency();

index.babel.js所需的依赖项:

"@babel/core": "7.1.2",
"@babel/node": "7.0.0",
"@babel/preset-env": "7.1.0",
"@babel/register": "7.0.0",