我的package.json
中有exports
部分:
"exports": {
"import": "./dist/a.es.js",
"require": "./dist/b.umd.js"
},
但对于发展,我想有不同的路径:
"exports": {
"DEV": {
"import": "./src/a.es.js", // <---------- SRC
"require": "./src/b.umd.js" , // <---------- SRC
},
"PROD": {
"import": "./dist/a.es.js",
"require": "./dist/b.umd.js"
}
},
是否有办法使用一些环境变量?
我可以使用下面的设置来解决这个问题
在我的程序导入的包中:
{
"name": "my-special-node-package",
"version": "1.0.0",
"license": "MIT",
"exports": {
".": {
"production": {
"require": "./prod/index.cjs.js",
"import": "./prod/index.esm.js"
},
"default": {
"require": "./index.cjs.js",
"import": "./index.esm.js"
}
},
}
}
然后在我的程序中:
// index.js
const myPkg = require('my-special-node-package')
在生产环境中,我使用node --conditions=production index.js
执行节点程序。否则我在dev模式下使用node index.js
。
另外,由于我使用的是TypeScript,而且TypeScript只在开发期间使用,所以我可以将默认的require/import值更改为指向index.ts
文件。
{
// ....
"exports": {
".": {
"production": {
"require": "./dist/index.cjs.js",
"import": "./dist/index.esm.js"
},
"default": "./index.ts"
},
}
}
这个设置允许我的本地开发总是直接TS文件,而不是依赖于每当它改变时要构建的每个包。