NodeJS + TypeScript + Webpack4: доступ к переменным приложения веб-пакета для не-веб-приложения NodeJS - PullRequest
0 голосов
/ 06 ноября 2018

Поскольку я не хочу нескольких выходных файлов (скомпилированных файлов TypeScript), я рассматриваю использование webpack для не-веб-приложений NodeJS. Если просто построить ниже node_modules / some_dependency / index.ts от Webpack , 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() {
   // ---
}

Может ли модуль NodeJS ( index.babel.js ) увидеть Dependency, если просто использовать ProvidePlugin ?

1 Ответ

0 голосов
/ 07 ноября 2018

Минимальный 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",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...