我有一个基于NodeJS的模块化应用程序。 应用程序的结构类似于
现在我想将整个项目缩小并连接成一个文件。我面临的挑战是每个控制器和dao文件都使用“ require ”(相对路径)来包含节点模块
有没有简单的方法来实现这个目标?
修改
尝试了webpack模块
我的webpack.config.js看起来像
var webpack = require('webpack');
var path = require('path');
var fs = require('fs');
var nodeModules = {};
fs.readdirSync(path.resolve(__dirname, 'node_modules'))
.filter(x => ['.bin'].indexOf(x) === -1)
.forEach(mod => { nodeModules[mod] = `commonjs ${mod}`; });
module.exports = {
name: 'server',
target: 'node',
entry: './server.js',
output: {
path: path.join(__dirname, 'build'),
filename: 'bundle.js'
},
externals: nodeModules,
module: {
loader: [
{
test: /\.json$/, loader: 'json-loader'
}
]
}
}
它给出了这个错误:
>错误在./~/npm/~/npm-registry-client/test/unpublish-scoped.js 找不到模块:错误:无法解析'文件'或'目录'./fixtures/@npm/np D:\ OTTAFW \ node_modules \ npm \ node_modules \ npm-regi中的m-registry-client / cache.json 斯特雷客户端\测试
答案 0 :(得分:0)
你看过webpack了吗? https://webpack.js.org/concepts/
答案 1 :(得分:0)
您可以使用像gulp这样的任务运行器进行缝合和缩小。如果您想直接缝合和缩小文件,请参阅here。为了管理依赖关系,您必须定义依赖关系树并编写逻辑,以便在最终构建中不添加多个依赖关系。
server.js
controllers
|-- controller1.js
require('lodash')
|-- controller2.js
require('./controller1')
dao
|-- dao1.js
require('lodash')
require('../controllers/controller2')
|-- dao2.js
require('../controllers/controller1')
node_modules
假设,如果是这种情况,你必须注意文件只附加一次的事实。
相反,您可以使用rollup