新版的pkg已經支援es6
不再需要如同舊版要先透過babel轉成es5才能封裝
封裝時會依照檔案內有require的module全部封裝進來
但如果是要需要動態require的部分
例如依照程式邏輯判斷需要require的檔案
這部分如果不例外處理 在runtime時無法判斷真正要require的檔案
這部分需要做以下幾點的處理
1.package.json內
加入提示pkg要動態載入的script目錄
"pkg": {
"scripts": [
"./src/routes/**/**/*.js",
"./src/graphql/**/**/*.js"
],
"targets": [
"node10-macos-x64",
"node10-win-x64"
]
}
2.不能直接引用require
需要把require method另外存放使用
ex:
global.requireExternal = require
就可以在要require動態模組時改用
global.requireExternal
3.注意檔案路徑
為確保在跑nodejs或封裝成應用程式
要require的模組路徑必須以__dirname組成正確完整路徑
ex: filePath = `${__dirname}/src/query`
4.sample code
global.require = require
files.forEach(filename => {
const requirePath = `${__dirname}/folder/${filename}`
const MyClass = global.require(requirePath)
new MyClass()
})
沒有留言:
張貼留言