WebPack引用外部

时间:2017-02-24 21:12:40

标签: webpack ionic2

我正在尝试捆绑一个没有libs的离子项目。我想稍后将捆绑的应用程序包含在带有这些库的项目中。使用externals排除node_modules我从5mb main.js文件转到19k main.js文件。

这是我的webpack.config.js -

var nodeExternals = require('webpack-node-externals');

module.exports = {
    target: 'web',
    externals: [nodeExternals()],
    entry: "./src/app/main.ts",
    output: {
        filename: "bundle.js"
    },
    resolve: {
        // Add '.ts' and '.tsx' as a resolvable extension.
        extensions: [".webpack.js", ".web.js", ".ts", ".ts", ".js"],
        modules: ["node_modules"]
    },
    module: {
        loaders: [
            // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
            { test: /\.ts?$/, loader: "ts-loader" }
        ]
    }
}

我检查了bundle.js文件并看到了这样的内容 -

/***/ (function(module, exports) {

module.exports = require("ionic-native");

/***/ }),

这是有道理的,因为它需要为其他模块提供一些东西,这不是正确的道路。如果我需要这个要求指向像../../foo/modules/这样的东西 - 我该怎么做?

1 个答案:

答案 0 :(得分:0)

假设您需要从模块中获取 abc_xyz.json

你可以像下面那样做。

let renderjson = async () => {
  const abcxyz = await import('../foo/modules/abc_xyz.json'); // path relative to bundle.js
  return abcxyz;
}
externals: ['/abc_xyz.json/', nodeExternals()]

如果您要构建节点,请确保目标是 node。您还应该将 libraryTarget 定义为 commonjs2

相关问题