【问题标题】:NodeJS + TypeScript + Webpack4: Access to webpack application variables for non-web NodeJS applicationNodeJS + TypeScript + Webpack4:访问非 web NodeJS 应用程序的 webpack 应用程序变量
【发布时间】:2018-11-06 03:38:43
【问题描述】:

因为我不想要多个输出文件(编译的 TypeScript 文件),所以我正在考虑将 webpack 用于非 Web NodeJS 应用程序。如果只是由 Webpacknode_modules/some_dependency/index.ts 下构建,则 Dependency 类将在 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

【问题讨论】:

    标签: javascript node.js typescript webpack


    【解决方案1】:

    最小的 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']
      }
    };
    

    现在,如果 TypeScriptSource/index.ts 中的类 Dependency 具有 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",
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2022-01-20
      • 2022-11-29
      • 1970-01-01
      • 2012-01-17
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多