这是我最终使用的方法。此过程将创建一个文件,该文件可以与<script src="myModuleName.min.js"></script>
HTML 页面上的标签链接,以便在浏览器中使用。
- 安装汇总和插件(此处列出的许多插件是可选的,但此配置应涵盖您使用模块的任何方式)
npm install rollup-plugin-buble rollup-plugin-commonjs rollup-plugin-node-resolve rollup-plugin-typescript rollup-plugin-uglify typescript --save-dev
- 此示例汇总配置文件显示了如何防止汇总也捆绑您的依赖项。在这种情况下,我使用的是 jQuery 和 Angular,但我不想将它们包含在我提供给用户的包中——所以我将它们列为外部变量,它们都恰好有一个全局变量——此示例文件显示了如何处理这种情况:
rollup.config.js
'use strict';
import 'rollup';
import typescript from 'rollup-plugin-typescript';
import buble from 'rollup-plugin-buble';
import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';
import uglify from 'rollup-plugin-uglify';
import {minify} from 'uglify-js';
/**
* Default/development Build
*/
const config = {
entry: 'src/index.ts',
exports: 'auto',
globals: {
'jquery': '$',
'angular': 'angular'
},
external: ['angular', 'jquery'],
targets: [{dest: 'dist/myModuleName.js', format: 'umd', moduleName: 'myModuleName', sourceMap: true}],
plugins: [
typescript({
typescript: require('typescript')
}),
buble(),
nodeResolve({
jsnext: true,
main: true
}),
commonjs({
namedExports: {
'node_modules/jquery/dist/jquery.min.js': ['jquery'],
'node_modules/angular/angular.min.js': ['angular']
}
})
]
}
// Minified JS Build
if (process.env.BUILD === 'minify') {
config.targets = [{dest: 'dist/myModuleName.min.js', format: 'umd', moduleName: 'myModuleName', sourceMap: false}];
config.plugins.push(
uglify({}, minify)
);
}
// Report destination paths on console
console.info(`\u001b[36m\[Rollup ${process.env.BUILD} build\]\u001b[97m \nConverting Typescript from ${
config.entry} to javascript, exporting to: ${config.targets[0].dest}`);
export default config
- 将脚本添加到package.json
"scripts": {
"build": "rollup -c rollup.config.js --no-conflict --environment BUILD:development",
"minify": "rollup -c rollup.config.js --environment INCLUDE_DEPS,BUILD:minify"
}
- 提供一个用于汇总使用的文件:
src/index.ts
`export * from './myModule';`
- 如果您正在编写库,可以选择使用文件来收集要导出的模块,这些是您打算公开使用的功能。
src/myModule.ts
export {myOtherClass, myFunction} from './myUtils/myFile';
export * from "./myUtils/myOtherFile";
- 运行
npm run build
或npm run build && npm run minify
也获得缩小版本。