當創建一個新公共管理軟件包中設置的相對路徑的分辨率,這是很常見的,方便構建它像這樣:如何基於「DIST」文件夾
root
/dist
/src
/package.json
其中package.json
:
{
"main": "dist/index.js"
"files": [ "dist" ]
}
這種方法的缺點是,當消費者想要使用相對路徑來請求文件時,它需要包含dist
文件夾。例如。 const abc = require('my-package/dist/x/y/abc');
有沒有辦法告訴NodeJS根據path.dirname(main)
或類似的東西來解析相對路徑?
更新:澄清,這與相對/深度分辨率有關,而不是關於ES6中的出口吊裝。 這是一個有爭議的話題,應該這樣做,因爲消費者是耦合到包的內部文件夾結構。
更新2:我想實現的是「子模塊」(類似於命名空間)的概念。例如,我的文件夾結構是這樣的:
root
/dist
/testUtil.js
/index.js
testUtil.js
包含有用的功能進行測試。由於它沒有用於正常使用,我不想將它們導出到頂層。中即代替:
// index.js
export * from './testUtil'
我會做:
// index.js
import * as testUtil from './testUtil'
export { testUtil }
然而,仍處於頂層暴露testUtil
模塊命名空間,這是很難用:
// consuming.js
import { testUtil } from 'my-package'
const { funcA, funcB } = testUtil
如果我可以在相對路徑下「拖拉」它會更好:
// consuming.js
import { funcA, funcB } from 'my-package/testUtil'
目前,沒有解決「DIST」的問題,我必須這樣做,而不是:
// consuming.js
import { funcA, funcB } from 'my-package/dist/testUtil'
你可以發佈'dist'目錄。 –
你的意思是在'dist'內創建'package.json'的副本嗎?這意味着我必須同步'dependencies'並複製部分腳本,比如'install','prepare','publish','version'等等。 – unional
是的。這會更麻煩,但它會給你一個更「清潔」的包。你可能只需要一個'package.dist.json'來複制並重命名爲構建步驟。儘管分發版本的腳本可能會少得多,它真的只需要一個安裝和運行腳本。 –