示例
有如下代码:
分别导入了以下本地模块
import InstanceCommand from "./commands/command";
import DataStructure from "./structure";
import globalConfig from "./config";
import as path from "path";
需求
需求是将这些分散的模块文件最终统一合并到一个 ts或js 文件中****(不需要包括依赖库),并且能够正常运行,合并后也许可以通过 Typescript 的命名空间来实现命名冲突之类的情况。
简而言之的话,就是希望将后端的 Typescript 打包到一个文件,但是不需要包含依赖库(依赖库的import语句应该继续存在)。
Typescript 的官方文档中有写不支持 CommonJS 规范下的输出到一个文件,尝试过 Webpack 打包,效果不佳,无法正常运行并且似乎会将依赖库的代码一并合并,导致文件异常巨大。也有可能是对此操作失误。
不知道有无相关工具能够实现此需求?还望指教!
打包还是得用 webpack 或者 rollupjs,它们都有 external
选项可以将匹配到的内容排除在外
Typescript 的官方文档中有写不支持 CommonJS 规范下的输出到一个文件
就算是 es modules 规范,也无法输出到一个文件中吧?
出于什么目的去做这么一件事情呀
@guojingkang 为了保护源代码,单文件混淆后编译进v8引擎生成单独的exe。
rollup 可以
使用rollup
结束一下这个话题,方案如下:
采用 Webpack 打包(webpack.config.js):
const path = require(‘path’); const nodeExternals = require(‘webpack-node-externals’)
module.exports = { mode: “production”, entry: ‘./src/app.js’, target: ‘node’, externalsPresets: { node: true }, // in order to ignore built-in modules like path, fs, etc. externals: [nodeExternals()], // in order to ignore all modules in node_modules folder output: { filename: ‘main.js’, path: path.resolve(__dirname, ‘dist’), }, };
解决。
@Suwings 看配置是,排除了所有的node 库?