123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- const LiveReloadPlugin = require('webpack-livereload-plugin');
- let { TsConfigPathsPlugin } = require('awesome-typescript-loader');
- const path = require('path');
- const swag = require('@ephox/swag');
- let create = (inFile, outFile) => {
- const tsConfig = "tsconfig.json";
- return {
- entry: inFile,
- mode: 'development',
- devtool: 'source-map',
- optimization: {
- removeAvailableModules: false,
- removeEmptyChunks: false,
- splitChunks: false,
- },
- resolve: {
- symlinks: false,
- extensions: ['.ts', '.js'],
- plugins: [
- // We need to use the awesome typescript loader config paths since the one for ts-loader doesn't resolve aliases correctly
- new TsConfigPathsPlugin({
- baseUrl: '.',
- compiler: 'typescript',
- configFileName: tsConfig
- })
- ]
- },
- module: {
- rules: [
- {
- test: /\.js|\.ts$/,
- use: ['@ephox/swag/webpack/remapper']
- },
- {
- test: /\.ts$/,
- use: [
- {
- loader: 'ts-loader',
- options: {
- transpileOnly: true,
- compilerOptions: {
- declarationMap: false
- },
- configFile: tsConfig,
- experimentalWatchApi: true
- }
- }
- ]
- }
- ]
- },
- plugins: [
- new LiveReloadPlugin()
- ],
- output: {
- filename: path.basename(outFile),
- path: path.resolve(path.dirname(outFile)),
- pathinfo: false
- }
- };
- };
- module.exports = function (grunt) {
- var packageData = grunt.file.readJSON('package.json');
- grunt.initConfig({
- pkg: packageData,
- shell: {
- command: 'tsc'
- },
- 'webpack-dev-server': {
- options: {
- webpack: [
- create('./src/demo/ts/ephox/alloy/demo/Demos.ts', 'scratch/compiled/demo.js')
- ],
- inline: false,
- port: 3003,
- host: '0.0.0.0',
- disableHostCheck: true
- },
- start: { }
- },
- rollup: {
- options: {
- treeshake: true,
- name: 'plugin',
- format: 'iife',
- banner: '(function () {',
- footer: 'plugin();})()',
- onwarn: swag.onwarn,
- plugins: [
- swag.nodeResolve({
- basedir: __dirname
- }),
- swag.remapImports()
- ]
- }
- },
- watch: {
- skins: {
- files: ['src/**/*'],
- tasks: ['rollup'],
- options: {
- spawn: false
- }
- }
- }
- });
- require('load-grunt-tasks')(grunt, {
- requireResolution: true,
- config: "../../package.json",
- pattern: ['grunt-*', '@ephox/bedrock', '@ephox/swag']
- });
- grunt.registerTask('dev', ['webpack-dev-server']);
- };
|