src --
-- modules
-- module1
-- module2
-- app
-- main.ts
package.json
tsconfig.json
webpack.config.js
webpack.config.js:'use strict';
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const path = require( 'path' );
module.exports = {
entry: {
common: './src/app/common.ts',
main: './src/app/main.ts'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js'
},
resolve: {
extensions: ['.ts', '.tsx', '.js'],
alias: {
module1: path.resolve(__dirname, 'src/modules/module1'),
module2: path.resolve(__dirname, 'src/modules/module2')
}
},
module: {
loaders: [
{ test: /\.tsx?$/, loader: 'ts-loader' }
],
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [ 'css-loader', 'sass-loader' ]
})
}
]
},
plugins: [
]
}
Почему alias подтягивается верно:
то есть это в main.ts работает:
import {AllSiteData} from 'module1'
console.log(AllSiteData);
в консоли браузера всё верно:
{
logo: 'p.png',
title: 'Site name'
}
А в консоли nodejs выдается вот такое:
error TS2307: Cannot find module 'module1'.
Однако если я поправлю на в main.ts, на:
import {AllSiteData} from '../modules/module1';
То всё работает.
Как правильно настроить а точнее достроить alias, чтобы их еще и typescript видел.
Вот мой tsconfig.js:
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"experimentalDecorators": true,
"jsx": "react",
"allowJs": true,
"alwaysStrict": true,
"lib": [
"es2015",
"dom"
],
"paths": {
"module1": ["src/modules/module1"],
"module2": ["src/modules/module2"]
}
}
}