将汇总点指向备用文件以进行导入
Point rollup to alternate file for import
背景:
我们有一个 Angular 2 应用程序,我们希望开始对其使用 AOT 编译。很简单...除了我的依赖项之一...
我们使用 autobahn.js 通过网络套接字连接与我们的服务器通信。问题在于在汇总中加载此依赖项。
autobahn.js 的作者决定,对于他们浏览器版本的库,他们将在 bower(足够公平)而不是 npm 中托管它。
我们有一个库,其中包含 autobahn.js 一些不错的实用程序并为我们处理其他事情。这很棒,因为它是一个通用的解决方案。这个库可以在浏览器和我们的 node.js 服务器中使用。 (耶)
但是 autobahn
的节点版本使用 fs
、url
和其他节点特定功能。 (嘘)
他们库的 bower
版本对浏览器使用了正确的等价物,这很好。
在包装器中我们有一个 import * as autobahn from 'autobahn';
(我们使用打字稿)这在节点中工作得很好,并且在 SystemJS 中使用一些配置也能正常工作。
问题:
如何告诉 rollup
(或 rollup-plugin-commonjs
)指向 bower_components/autobahnjs/autobahn.js
文件而不是默认情况下指向 node_modules/autobahn/index.js
文件。
当前配置:
import rollup from 'rollup';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import uglify from 'rollup-plugin-uglify';
export default {
entry: 'dist/iss/index.js',
dest: 'dist/iss/bundle.js',
sourceMap: false,
format: 'iife',
moduleName: 'statusMonitor',
external: [
'autobahn',
'moment',
'moment-timezone'
],
context: 'window',
plugins: [
nodeResolve({jsnext: true, module: true, browser: true}),
commonjs({
include: 'node_modules/**'
}),
json(),
uglify()
]
}
其他选项:
另一个对我们有用的选项是 autobahn
也可以作为一个全局的,如果我们可以修补 rollup 以使用全局 autobahn
关闭 window
那么它就可以工作对于我们的用例。
有一个类似于 node-resolve 的 rollup-plugin-bower-resolve 插件——如果你将它包含在你的 plugins
数组中 before node-resolve(或使用node-resolve 中的 skip
选项)那么它应该能够找到 autobahn
.
现在在 npm 上
https://github.com/crossbario/autobahn-js-browser
The browser version is published to npm under the name autobahn-browser. Install with:
npm install autobahn-browser
Note: the NodeJS version of Autobahn continues to be published under the name autobahn.
背景:
我们有一个 Angular 2 应用程序,我们希望开始对其使用 AOT 编译。很简单...除了我的依赖项之一...
我们使用 autobahn.js 通过网络套接字连接与我们的服务器通信。问题在于在汇总中加载此依赖项。
autobahn.js 的作者决定,对于他们浏览器版本的库,他们将在 bower(足够公平)而不是 npm 中托管它。
我们有一个库,其中包含 autobahn.js 一些不错的实用程序并为我们处理其他事情。这很棒,因为它是一个通用的解决方案。这个库可以在浏览器和我们的 node.js 服务器中使用。 (耶)
但是 autobahn
的节点版本使用 fs
、url
和其他节点特定功能。 (嘘)
他们库的 bower
版本对浏览器使用了正确的等价物,这很好。
在包装器中我们有一个 import * as autobahn from 'autobahn';
(我们使用打字稿)这在节点中工作得很好,并且在 SystemJS 中使用一些配置也能正常工作。
问题:
如何告诉 rollup
(或 rollup-plugin-commonjs
)指向 bower_components/autobahnjs/autobahn.js
文件而不是默认情况下指向 node_modules/autobahn/index.js
文件。
当前配置:
import rollup from 'rollup';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import uglify from 'rollup-plugin-uglify';
export default {
entry: 'dist/iss/index.js',
dest: 'dist/iss/bundle.js',
sourceMap: false,
format: 'iife',
moduleName: 'statusMonitor',
external: [
'autobahn',
'moment',
'moment-timezone'
],
context: 'window',
plugins: [
nodeResolve({jsnext: true, module: true, browser: true}),
commonjs({
include: 'node_modules/**'
}),
json(),
uglify()
]
}
其他选项:
另一个对我们有用的选项是 autobahn
也可以作为一个全局的,如果我们可以修补 rollup 以使用全局 autobahn
关闭 window
那么它就可以工作对于我们的用例。
有一个类似于 node-resolve 的 rollup-plugin-bower-resolve 插件——如果你将它包含在你的 plugins
数组中 before node-resolve(或使用node-resolve 中的 skip
选项)那么它应该能够找到 autobahn
.
现在在 npm 上
https://github.com/crossbario/autobahn-js-browser
The browser version is published to npm under the name autobahn-browser. Install with:
npm install autobahn-browser
Note: the NodeJS version of Autobahn continues to be published under the name autobahn.