2017-01-30 36 views
1

我有一個基於NodeJS的模塊化應用程序。 應用程序的結構看起來像節點js將模塊化代碼結構中的單個文件縮小並連接起來

  • server.js
  • 控制器
    • controller1.js
    • controller2.js
  • DAO
    • dao1.js
    • dao2.js
  • node_modules

現在我要來縮小和串聯整個項目到一個文件中。我面臨的挑戰是每個控制器和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' 
     } 
    ] 
    } 
} 

這是給這個錯誤:

ERROR in ./~/npm/~/npm-registry-client/test/unpublish-scoped.js Module not found: Error: Cannot resolve 'file' or 'directory' ./fixtures/@npm/np m-registry-client/cache.json in D:\OTTAFW\node_modules\npm\node_modules\npm-regi stry-client\test

+1

minify節點應用程序有什麼意義? – Niezborala

+0

我想分享這個應用程序,並希望保持代碼很小的安全 –

回答

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