1. ホーム

エスシックス

2022-03-17 20:57:28

1. プロジェクトビルド

gitコマンドでプロジェクトファイルを作成:es6にはapp、server、taskが含まれ、appファイルにはプロジェクトのjs、css、viewファイルが含まれ、tasksフォルダにはutilフォルダ、package.json(npm initで作成)などが含まれます。

app="entry file index.jsとclass folder="test.jsにあるjs。

     views=" エラーテンプレートファイルerror.ejsのエントリファイル、その他index.ejsの基本的な処理を行う。

(ファイル初期化コマンド:touch)

serverの下に作成されたフォルダには、事前にexpress scaffoldingをインストールする必要があります。これはnodeに依存するので、nodeのウェブサイトにアクセスしてインストールパッケージを事前にダウンロードしてください。

インストールコマンド:express -e .   

注:expressを報告する際に問題が発生しました:コマンドが見つかりません、解決策の参照。 http://blog.csdn.net/dai_jing/article/details/38087443

npm install を実行して、サーバーコードを自動的にインストールします。

ビルドディレクトリ tasts (ファイルのマージ、ディレクトリの更新などを処理) = "util (共通スクリプトを格納) = "args.js

npm initでpackage.jsonを作成します。

touch .babelrc (babelが設定を読み込むためにコンパイルします)

touch gulpfile.babel.js (es6を使用しているのでbabelを追加)

2.args.js

import yargs from 'yargs';

// Create command line arguments
const args = yargs

    .option('production',{
        boolean:true,
        default:false,
        description:'Select the online environment, not the default development environment -production'
    })

    .option('watch',{
        boolean:true,
        default:false,
        description:'Listen for changes to the file and whether it needs to be automatically compiled'
    })

    .option('verbose',{
        boolean:true,
        default:false,
        description:'log'
    })

    .option('sourcemaps',{
        description:'Force the generation of sourcemaps'
    })

    .option('port',{
        string:true,
        default:8000,
        description:'Set the server access port'
    })

    .argv // set the command to be parsed in character creation

表示コード

3. ビルドディレクトリの下にscript.jsを作成(touch) タスク

必要なパッケージをファイルに導入し、コマンドラインでインストール npm install yargs gulp gulp-if gulp-concat webpack webpack-stream vinyl-named gulp-livereload gulp-plumber gulp-rename gulp -uglify gulp-util --save-dev (遅い、失敗、問題のあるインストール、npm mirrorで解決可能 例:タオバオミラー.)

エラー報告に注意(

npm WARN deprecated [email protected]: RegExp DoS 問題を回避するため、minimatch 3.0.2 以降にアップデートしてください。



npm WARN deprecated [email protected]: RegExp DoS 問題を回避するため、minimatch 3.0.2 以降に更新してください。



npm WARN deprecated [email protected]: graceful-fs v3.0.0 以前のバージョンは、ノードリリース >= v7.0 では失敗します。このため、できるだけ早くgraceful-fs@^4.0.0に更新してください。また、'npm ls graceful-fs'を使用して、ツリーの中でそれを見つけることができます。

): すでに4.6.1になっており、対応できていない。解決策参考。 https://segmentfault.com/q/1010000005749798

import gulp from 'gulp';
import gulpif from 'gulp-if'; //handle if judgments
import concat from 'gulp-concat'; //handle character creation concatenation
import webpack from 'webpack';
import gulpWebpack from 'webpack-stream';
import named from 'vinyl-named'; //file naming
import livereload from 'gulp-livereload'; //hotload
import plumber from 'gulp-plumber'; //processing file streams
import rename from 'gulp-rename'; //handle file renaming
import uglify from 'gulp-uglify'; //process file compression
import {log,colors} from 'gulp-util';// package output in command line tools
import args from '. /util/args'; // package for parsing command-line arguments that you edit yourself

gulp.task('scripts',() => {
    return gulp.src(['app/js/index.js'])
        .pipe(plumber({
            errorHandler:function () {

            }
        }))
        .pipe(named())
        // Compilation of js
        .pipe(gulpWebpack({
            module:{
               loaders:[{
                   test:/\.js$/,
                   loader:'babel'
               }]
            }
        },null,(err,stats) => {
            log(`Finished '$(colors.cyan('scripts'))'`,stats.toString({
                chunks:false
            }))
        }))
    // write the compiled file to the specified path
        .pipe(gulp.dest('server/public/js'))
    //backup the file
        .pipe(rename({
            basename:'cp',
            extname:'.min.js'
        }))
    //compile the compressed file
        .pipe(uglify({compress:{properties:false},output:{'quote_keys':true}}))
        .pipe(gulp.dest('server/public/js'))
    //monitor the listener and reload
        .pipe(gulpif(args.watch,livereload()))
})

表示コード

3. テンプレート処理用のpages.jsをtasksフォルダに作成する

import gulp from 'gulp';
import gulpif from 'gulp-if';
import livereload from 'gulp-livereload';
import args from '. /util/args';

//processing templates
gulp.task('pages',() => {
    return gulp.src('app/**/*.ejs')
        .pipe(gulp.dest('server'))
        .pipe(gulpif(args.watch,livereload()))
})

表示コード

4. テンプレートを処理する css.js を tasks フォルダに作成します。

import gulp from 'gulp';
import gulpif from 'gulp-if';
import livereload from 'gulp-livereload';
import args from '. /util/args';

//processing templates
gulp.task('css',() => {
    return gulp.src('app/**/*.css')
        .pipe(gulp.dest('server/public'))
        .pipe(gulpif(args.watch,livereload()))
})

表示コード

5. 5.サーバースクリプトserver.jsをtasksフォルダに作成します。

import gulp from 'gulp';
import gulpif from 'gulp-if';
import liveserver from 'gulp-live-server'; // package to start the server
import args from '. /util/args';

gulp.task('serve',(cb) => {
       if(!args.watch) return cb();

       var server = liveserver.new(['--harmony','server/bin/www']);
       server.start();

       gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function () {
           server.notify.apply(server,[file]);
       })

    // When the route. Changes need to be restarted to listen to the server
        gulp.watch(['server/routes/**/*.js','server/app.js'], function () {
            server.start.bind(server)();
        })
})

表示コード

6. tasks フォルダに browser.js というスクリプトを作成します。

import gulp from 'gulp';
import gulpif from 'gulp-if';
import gutil from 'gulp-util'; //gulp function collection common tools
import args from '. /util/args';

gulp.task('browser',(cb) =>{
    if(!args.watch) return cb();
    gulp.watch('app/**/*.js',['scripts']);
    gulp.watch('app/**/*.ejs',['pages']);
    gulp.watch('app/**/*.css',['css']);
});

// When the file is created and needs to be recompiled into the server, the new file will be overwritten, so the specified file should be cleared, so create clean.js

表示コード

7. 新しい依存関係をダウンロードする

npm install del gulp-util gulp-live-server --save-dev

8...tasks フォルダにクリーンファイル clean.js を作成します。

import gulp from 'gulp';
import del from 'del'; //introduce the deleted package
import args from '. /util/args';

gulp.task('clean',() => {
    return del(['server/public','server/views'])
})

表示コード

9...tasks フォルダに、タスクの順番を定義する build.js を作成します。

import gulp from 'gulp';
import gulpSequence from 'gulp-sequence'; //define the sequential order of packages

gulp.task('build',gulpSequence('clean','css','pages','scripts', ['browser','serve']));

表示コード

パッケージのインストール npm install gulp-sequence --save-dev

10...tasks フォルダに default.js を作成します。

import gulp from 'gulp';

gulp.task('default',['build']);

表示コード

11. gulpの実行

エラー報告に注意してください。

dingqi@LAPTOP-SV6SV5RV MINGW64 ~/Desktop/es6



$ gulp



[23:13:45] 外部モジュール babel-register のロードに失敗しました。



[23:13:45] 外部モジュール babel-core/register のロードに失敗しました。



[23:13:45] 外部モジュール babel/register のロードに失敗しました。



[23:13:45] Using gulpfile ~Desktopes6 ╱gulpfile.babel.js



[23:13:46] タスク 'default' が gulpfile に含まれていません。



[23:13:46] 正しいgulpfileの書式をドキュメントで確認してください。

解決策

npm install babel-loader babel-core babel-preset-env --save-dev

gulpfile.babel.js が編集されました。

import requireDir from 'require-dir'; //introduce the package of files

requireDir('. /tasks'); //introduce so files

表示コード

パッケージのインストール npm install require-dir --save-dev

bablerc さんが編集しました。

{
  "presets": ["es2015"]
}

表示コード

パッケージのインストール npm install babel-preset-es2015 --save-dev

gulpの実行が成功することがある

12. gulp --watch を実行する // ファイルを一回実行するだけでなく、リッスンするために watch を追加する

13. ブラウザでlocalhost: 3000を開きます。

app="views="index.ejsを編集してください。

! ページテンプレートを素早く作成するための+tabリターン

とりあえず手動でリフレッシュ

14. サーバーの下のエントリ app.js ファイルに以下を追加します。

app.use(require('connect-livereload')()); //add auto-refresh





Location.
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('connet-livereload')());
app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

表示コード

サービスを終了する Ctrl+c

パッケージのインストール npm install connect-livereload --save-dev

15. テスト

gulp --watch // 実行

16. 関数を書く

app="js="index.js に移動します。

エディター

class Test{
    constructor(){
        this.a = 'hello world';
    }
}

let test = new Test();

document.body.innerHTML = test.a;

表示コード

app="views="index.ejs のページで紹介されています。

<script src=". /js/index.js"></script>

17. ブラウザが更新されたので開く

// ビルドツールのセクションが完成しました