- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我们有一个项目利用导入,并要求通过 NPM 包含各种第三方包。其中一些包是用 es6 编写的,我们需要将它们转换为 es5/es2015 以便在 IE11 等浏览器中工作,因为一些包使用 =>
函数的箭头语法.
我们自己的代码使用箭头语法,但它正在通过 browserify 转换为更普遍支持的语法。问题是我们导入的包,例如 camelcase-keys
,不会被转译并包含在它们的原始格式中。
这对于像 Chrome 和 Edge 这样的浏览器来说很好,但对于 IE 来说它会中断,因为不支持该语法。
这是我们当前的 package.json 和 gulpfile.js。如果您需要任何进一步的信息,请告诉我。
包.json
{
"name": "app",
"private": true,
"dependencies": {
"angular": "^1.6.4",
"angular-auto-complete": "^1.4.3",
"angular-input-masks": "^4.1.0",
"angular-moment": "^1.0.1",
"angular-route": "^1.6.4",
"angular-sanitize": "^1.6.6",
"angular-strap": "^2.3.12",
"animate.css": "^3.5.2",
"bootstrap": "^3.3.7",
"bootstrap-sass": "^3.3.7",
"bootstrap-select": "^1.12.4",
"bugsnag-angular": "^1.0.1",
"bugsnag-js": "^4.0.3",
"camelcase-keys": "^4.2.0",
"date-holidays": "^1.2.1",
"font-awesome": "^4.7.0",
"moment": "^2.19.3",
"ng-file-upload": "^12.2.13",
"ng-storage": "^0.3.2",
"papaparse": "^4.3.7",
"snakecase-keys": "^1.1.0",
"summernote": "^0.8.9",
"sweetalert": "^2.0.8",
"uuid": "^3.2.1"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-plugin-transform-es2015-classes": "^6.24.1",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babelify": "^8.0.0",
"browserify": "^14.5.0",
"gulp": "^3.9.1",
"gulp-angular-templatecache": "^2.0.0",
"gulp-cache-bust": "^1.1.0",
"gulp-concat": "^2.6.1",
"gulp-if": "^2.0.2",
"gulp-rm": "^1.0.2",
"gulp-sass": "^3.1.0",
"gulp-uglify": "^2.1.2",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"yargs": "^8.0.1"
},
"browserify": {
"transform": [
[
"babelify",
{
"presets": [
"es2015"
],
"plugins": [
"transform-es2015-classes"
]
}
]
]
}
}
gulpe文件.js
const gulp = require('gulp'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
rm = require('gulp-rm'),
browserify = require('browserify'),
template = require('gulp-angular-templatecache'),
bust = require('gulp-cache-bust'),
gulpif = require('gulp-if'),
sass = require('gulp-sass'),
argv = require('yargs').argv,
source = require('vinyl-source-stream'),
buffer = require('vinyl-buffer');
gulp.task('images', function() {
return gulp.src('assets/images/**/*.*').pipe(gulp.dest('public/images'));
});
gulp.task('fonts', function() {
return gulp.src([
'assets/fonts/**/*.*',
'node_modules/bootstrap-sass/assets/fonts/**/*.*',
'node_modules/font-awesome/fonts/*'
]).pipe(gulp.dest('public/fonts'));
});
gulp.task('html', function() {
return gulp.src('app/**/*.html').pipe(template({ module: 'app' })).pipe(gulp.dest('public/js'));
});
gulp.task('sass', function () {
return gulp.src([
'node_modules/font-awesome/css/font-awesome.css',
'assets/styles/app.scss'
]).pipe(sass()).pipe(concat('app.css')).pipe(gulp.dest('public/css'));
});
gulp.task('js', function() {
return browserify({
entries: ['./app/app.js'],
paths: ['./node_modules', './app/']
})
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest('./public/js'));
});
gulp.task('wysiwyg', function() {
return gulp.src('./node_modules/summernote/dist/summernote.min.js')
.pipe(concat('wysiwyg.js'))
.pipe(gulp.dest('public/js'));
});
gulp.task('bust', function() {
return gulp.src('./public/index.php').pipe(bust({ type: 'timestamp' })).pipe(gulp.dest('./public/'));
});
gulp.task('default', function() {
return gulp.start(['images', 'fonts', 'html', 'sass', 'js', 'wysiwyg', 'bust']);
});
gulp.task('basic', function() {
return gulp.start(['html', 'sass', 'js', 'bust']);
});
gulp.task('watch', function() {
gulp.start(['default']);
gulp.watch('assets/styles/**/*.scss', {cwd: './'}, ['sass']);
gulp.watch('assets/images/**/*.*', {cwd: './'}, ['images']);
gulp.watch('assets/fonts/**/*.*', {cwd: './'}, ['fonts']);
gulp.watch('app/**/*.html', {cwd: './'}, ['html']);
gulp.watch('app/**/*.js', {cwd: './'}, ['js']);
});
最佳答案
我之前使用 Webpack 完成过此操作,使用 babel-loader 非常容易。
恐怕 browserify 本身无法转换所有 ES6 语法...但有人创建了 babelify为了这些目的!
使用 babelify 你可以做类似的事情:
gulp.task('js', function() {
return browserify({
entries: ['./app/app.js'],
paths: ['./node_modules', './app/']
})
.transform(babelify, {
global: true,
presets: ["es2015"]
})
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest('./public/js'));
});
我们需要使用 global
标志来强制 browserify 的转换通过 node_modules。 (还有其他选项,例如 only
如果我们只想转换几个 node_modules。(你也可以添加更多的插件和预设,但这取决于你和你的 babel 转换配置。
关于javascript - Browserify 将所需或导入的包转译为 es2015,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49699666/
在 ES6 中,我们可以使用 rest 参数,有效地创建一个参数数组。 TypeScript 使用 for 循环将其转换为 ES5。我想知道是否存在使用 for 循环方法比使用 Array.proto
鉴于以下情况: require('babel-core').transform('3').code 有没有办法让它返回3 (一个表达式)而不是 3; (一份声明)? 我试过了: 在网络和各种站点上搜索
这是我的计划。我想使用适用于 Windows 和 Mac 的 Typescript 构建应用程序。但是,由于我要将 Typeascript 代码转换为 Javascript 代码,所以我想尽可能实现一
是否有一个独立的转译器用于将 JSX 转换为 JavaScript(即只是 → createElement("foo", …) ,没有别的)? 我知道我可以只使用 Babel 和 Transform
我知道使用 babel 设置内联 javascript transpile // your es6 code 但是有没有可能将 es6 代码的字符串版本提供给 babel 并获得作为字
我想转译 ES6 中的几个 js 文件以与 chrome 兼容,但似乎 http://babeljs.io/docs/usage/cli/ 中的文档不准确。 完成前几个步骤后,我在控制台中输入:bab
我玩了一下 Babel 和 ES6,转译了一些代码,但我被困在这部分了: class App extends SomeParent { myFunction() { } } 我感兴趣的
我全新安装了 Next.js,并且希望能够使用 import 和 async/await 等。 我已经更新了我的 .babelrc { "plugins": [ [ "modu
我在 index.html 中有这个 SystemJS 配置: System.config({ defau
我正在开发一个网络应用程序,并将我的 Javascript 分成多个文件。我正在使用 Babel 将 ES2015 源文件目录转换为单个 ES5 文件。来自面向对象的背景,我喜欢拥有“类”,无论它们是
我对 Webpack 还很陌生,我只是想在这里启动一个简单的项目。我收到以下错误: ERROR in ./index.js Module parse failed: /Users/jay/Docume
我正在开发一个使用 es6 和 es7 代码的 Aurelia 应用程序,我正在尝试使用 babel 转译代码。我的 packages.json 文件中有以下内容 "scripts": { "
问题 当我使用npm run start运行nodemon时,我收到错误:找不到模块“Test”,以及当我使用npm run build构建文件时 并运行 ./dist/index.js,我得到同样的
由于 babel 没有正确转译代码,所有测试都失败了。 下面是来自控制台的错误。 Jest encountered an unexpected token This usually means t
我知道这样的事情不应该难倒我,但它确实难倒了我。 我正在学习如何使用 coffeescript 以及如何使用 Adobe Brackets 作为我的文本编辑器。那么如何在 Adobe Brac
TypeScript 在转译过程中检查整个代码库,即使实际上只有一个文件发生了变化。对于小型项目,这很好,但随着我们的代码库增长,这需要相当长的时间。 在开发过程中,我希望我的单元测试能够快速响应。单
我是第一次建立 TS 项目。我很好奇 - 我可以使用和配置 Babel 或者只是做 tsc .. 进行转译。 两者的主要区别是什么? 最佳答案 主要区别在于对 TypeScript 语言本身的支持。
对于我拥有的每个手动模拟,我都会收到来自 Jest 的警告,因为它同时找到了它的 .ts 和 .js 版本,并要求我删除一个,即: jest-haste-map: duplicate manual m
我是 babel 的新手,正在尝试转换我的 es6 代码以与 IE11 一起使用。但是当我在 IE11 中运行代码时,我收到关于我的 forEach 代码的 js 错误。根据我的阅读,我需要添加预设
尝试使用 mocha 对 ReactJS 应用程序进行单元测试,但在 node_modules 中使用的 es6 功能(导入/导出)中出现错误文件夹。有问题的应用程序是使用 babel 进行转译的,但
我是一名优秀的程序员,十分优秀!