代码拉取完成,页面将自动刷新
/*
* Copyright (C) 2018 - present Instructure, Inc.
*
* This file is part of Canvas.
*
* Canvas is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, version 3 of the License.
*
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const gulp = require('gulp')
const gulpPlugins = require('gulp-load-plugins')()
const merge = require('merge-stream')
const rename = require('gulp-rename')
const DIST = 'public/dist'
const STUFF_TO_REV = [
'public/fonts/**/*.{eot,otf,svg,ttf,woff,woff2}',
'public/images/**/*',
// These files have links in their css to images from their own dir
'public/javascripts/vendor/slickgrid/images/*',
// Include *everything* from plugins
// so we don't have to worry about their internals
// TODO: do we need these if we are all-webpack?
// exclude .js here
'public/plugins/**/*.*',
]
gulp.task('rev', () => {
const timezonefilesToIgnore = [
'loaded.js',
'locales.js',
'rfc822.js',
'synopsis.js',
'zones.js',
'de_DE.js',
'fr_FR.js',
'fr_CA.js',
'he_IL.js',
'pl_PL.js',
'**/index.js',
].map(f => `!./node_modules/timezone/${f}`)
const timezoneFileGlobs = ['./node_modules/timezone/**/*.js'].concat(timezonefilesToIgnore)
const timezonesStream = gulp
.src(timezoneFileGlobs, {base: './node_modules'})
.pipe(gulpTimezonePlugin())
const customTimezoneStream = gulp
.src('./public/javascripts/custom_timezone_locales/*.js')
.pipe(rename(path => path.dirname = '/timezone'))
.pipe(gulpTimezonePlugin())
return makeIE11Polyfill().then((IE11PolyfillCode) => {
let stream = merge(
timezonesStream,
customTimezoneStream,
gulpPlugins.file('ie11-polyfill.js', IE11PolyfillCode, { src: true }),
gulp.src(STUFF_TO_REV, {
base: 'public', // tell it to use the 'public' folder as the base of all paths
follow: true // follow symlinks, so it picks up on images inside plugins and stuff
}),
gulp.src([
// on the mobile login screen, we don't load any of our webpack js bundles. but if they
// have a custom js file, we do load a raw copy of jquery for their custom js to use.
// See `include_account_js` in mobile_auth.html.erb
'node_modules/jquery/jquery.js',
'node_modules/tinymce/skins/lightgray/**/*',
], {
base: '.'
})
).pipe(gulpPlugins.rev())
if (process.env.NODE_ENV === 'production' || process.env.RAILS_ENV === 'production') {
const jsFilter = gulpPlugins.filter('**/*.js', {restore: true});
stream = stream.pipe(jsFilter)
.pipe(gulpPlugins.sourcemaps.init())
.pipe(gulpPlugins.uglify())
.pipe(gulpPlugins.sourcemaps.write('./maps'))
.pipe(jsFilter.restore)
}
return stream
.pipe(gulp.dest(DIST))
.pipe(gulpPlugins.rev.manifest())
.pipe(gulp.dest(DIST))
})
})
gulp.task('watch', () => gulp.watch(STUFF_TO_REV, ['rev']))
gulp.task('default', ['rev', 'watch'])
function gulpTimezonePlugin () {
const through = require('through2')
const wrapTimezone = (code, timezoneName) =>
`// this was autogenerated by gulpTimezonePlugin from the timezone source in node_modules
(window.__PRELOADED_TIMEZONE_DATA__ || (window.__PRELOADED_TIMEZONE_DATA__ = {}))['${timezoneName}'] ${code.toString().replace('module.exports', '')}
`
return through.obj((file, encoding, callback) => {
if (file.isNull()) return callback(null, file)
if (file.isBuffer()) {
const timezoneName = file.path
.replace(/.*\/timezone\//, '')
.replace(/\.js$/, '')
file.contents = new Buffer(wrapTimezone(file.contents, timezoneName))
return callback(null, file)
}
})
}
function makeIE11Polyfill () {
const coreJsBuilder = require('core-js-builder')
const FEATURES_TO_POLYFILL = [
'es.promise.finally',
'es6.array',
'es6.function',
'es6.map',
'es6.number',
'es6.number.is-integer',
'es6.object.assign',
'es6.object.is',
'es6.promise',
'es6.set',
'es6.string.code-point-at',
'es6.string.ends-with',
'es6.string.from-code-point',
'es6.string.includes',
'es6.string.iterator',
'es6.string.repeat',
'es6.string.starts-with',
'es6.symbol',
'es6.weak-set',
'es7.array.includes',
'es7.object.entries',
'es7.object.values',
'web.dom.iterable'
]
return coreJsBuilder({
modules: FEATURES_TO_POLYFILL,
library: false,
umd: false
}).then(code =>
`/*
THIS FILE WAS AUTOGENERATED BY gulp in makeIE11Polyfill to polyfill the following features:
${FEATURES_TO_POLYFILL}
*/
${code}`
)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。