解决未解决的npm链接符号链接需要?
问题描述:
当开发一个NPM包,这是常见的使用方法:解决未解决的npm链接符号链接需要?
npm link
它允许修改<myPackage>
下发展,而无需发布和取消发布所有的时间!开发人员可以在本地进行任何更改并立即查看。
它安装到一个项目中使用:
npm link <myPackage>
这是伟大的,但有一个问题,如果<myPackage>
有需要(路径)。
例如,它将使用<myPackage>
的真实位置作为__dirname,而不是符号链接的预期位置,它应该是项目的本地位置,就像常规的node_module一样。
我发现到目前为止,对于我的具体情况解决办法正常工作:
module.exports = {
loadImage: function (filename) {
var img
if (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]') {
try {
img = require('../../src/images/' + filename)
} catch (e) {
// Development only
img = require('./template/src/images/' + filename)
}
} else {
img = '/assets/images/' + filename
}
return img
}
}
但是,你可以想像,这导致在浏览器警告消息。
虽然我意识到这个问题的原因,理想情况下,我想压制错误。
答
我相信这不会是一个非常受欢迎的问题,在这种情况下,这是一个不会引起任何警告消息的好选择,这对于NPM Package开发阶段来说非常具体。
以下modules.exports提供了一些您想要导入到应用程序中的代码片段。你会找到loadImage
方法,以用于需要(路径)回退:
module.exports = {
loadImage: function (filename) {
if (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]') {
return (process.env.NPM_PACKAGE_DEV && require('./template/src/images/' + filename) ||
require('./template/src/images/' + filename))
} else {
return '/assets/images/' + filename
}
},
isBrowser: function() {
return (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]')
}
}
什么好的这个,就是你可以通过运行命令设置的NPM_PACKAGE_DEV,比初始化节点服务器(OSX终端语法):
export NPM_PACKAGE_DEV=1 && node server.js
如果省略NPM_PACKAGE_DEV中,require()则退回到最终使用的道路,那就是相对于项目node_modules目录。
希望这可以帮助别人在未来!