webpack.config.js 中节点模块的路径

use*_*212 8 javascript node.js typescript webpack

我有一个由多个应用程序组成的项目,希望能够使用全局 webpack.config.js 和 webpack 3.0(有效)构建完整的项目。同时,我希望有本地的 webpack.config.js 文件来单独构建每个项目。项目结构如下:

- src
  - project_1
    ...
    webpack.config.js
  ...
  - project_n
    ...
    webpack.config.js
  ...
  node_modules
  webpack.config.js
Run Code Online (Sandbox Code Playgroud)

显然,我不想复制项目子文件夹中的 node_modules。如何从项目子文件夹的 webpack.config.js 中引用全局 node_modules 文件夹?

我试过

resolve: {
    modules: [path.resolve(__dirname,'../node_modules')]
},
Run Code Online (Sandbox Code Playgroud)

在子文件夹 webpack 配置之一中,但我收到了许多此类错误

错误 TS2304:找不到名称 [...]

因为显然无法找到 node_modules 。

这是我用于 project_1 的完整 webpack.config.js:

var webpack = require('webpack');
const path = require("path")

module.exports =  {
    entry: path.resolve(__dirname, "src/project_1.ts"),
    output: {
        filename: "project_1_bundle.js",
        path:  path.resolve(__dirname, "bin")
    },
    externals: [
        "angular",
        "uuid",
        {
            "lodash": {
                commonjs: "lodash",
                amd: "lodash",
                root: "_" // indicates global variable
            }
        },
        {
            "jquery": {
                root: "$",
                amd: "jquery",
                commonjs: 'jquery'
            }
        },
        {
            "jquery-ui": {
                amd: "jquery-ui",
                commonjs: 'jquery-ui'
            }
        },
        {
            "Slick": {
                root: "Slick",
                amd: "Slick",
                commonjs: 'Slick'
            }
        }
    ],
    devtool: 'source-map',
    resolve: {
    // Add `.ts` and `.tsx` as a resolvable extension.
    extensions: ['.webpack.js', '.web.js', '.ts', '.tsx', '.js'],
    modules: [path.resolve(__dirname,'../node_modules')]
    },
    module: {
        rules: [
            {
                enforce: 'pre',
                test: /\.ts$/,
                use: ['tslint-loader']
            },
            {
                test: /\.tsx?$/,
                use: ['ts-loader']
            },
            {
                test: /\.html$/,
                use: ['html-loader']
            }
        ]
    }
};
Run Code Online (Sandbox Code Playgroud)