我正在尝试捆绑一个没有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/
这样的东西 - 我该怎么做?
答案 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