노드의 지속적인 통합회사 명

12121 단어 gulpnodeci
노드에 적용됩니다.js는 완전히 다른 세계이기 때문에 매우 재미있다.순가치(최고 및 최악):
  • 자바스크립트는 컴파일러도 없고 고유한 패키지 개념도 없다고 해석된다.
  • 플랫폼이 매우 분산되어 있다. 심지어 패키지 관리자도 쟁탈 중인 것 같다stigmergy. 누구 있습니까?
  • 따라서 이번 호에서는 앞서 살펴본 것과 일치하면서도 플랫폼에 특정한 방식으로 지속적인 통합을 실현하는 방법에 대해 중점을 두고 설명합니다.
  • A simple project
  • A more complete project
  • 간단한 항목


    leaflet-binglayer은(는) 플러그인입니다.그 목표는 기본적으로 소모되지 않는 방식Leaflet (“an open-source Javascript library for mobile-friendly interactive maps”)으로 Bing Maps층을 집적하는 것이다.이것은 브라우저 라이브러리이지 적당한 노드가 아니다.js 프로젝트, 하지만 원리와 도구 패키지는 매우 같습니다.

    거래 과다 / 마카토이사


    빙지도층을 처리하는 전단지 플러그인도 있어요.


    이 프로젝트의 주요 내용은 다음과 같습니다.

  • leaflet-binglayer ( gulpfile.js ).

  • The build filebuild.bat는 로컬에서 파일 생성을 수행하는 데 도움이 됩니다.

  • The script file ( .travis.yml ).
  • CI 구성 파일 파일 생성


    구축 설명으로 를 선택했습니다. 주로 순수한 Javascript가 될 수 있는 유일한 구축 도구이기 때문입니다.그것 자체도 어떤 일을 어떻게 해야 할지 거의 모른다. 나는 이것이 구축 도구에서 항상 좋은 일이라고 믿는다.내가 아는 다른 대안은 적어도 한 가지 측면에서 부족한 것 같다.

  • gulp.js는 좋은 도구이지만 설명은 주로 JSON입니다. 데이터 교환 형식으로만 설계되었습니다. grunt.js...

  • notoriously lacks comments는 매우 강력한 모듈 귀속기로 많은 기능을 가지고 있으며 때로는 구축 도구로 위장할 수 있다.다시 한 번 말씀드리는 건 JSON입니다.그것은 복잡한 장면을 복잡하게 만들었고, 때로는 심지어 불가능하게 만들었다.나는 그것을 모듈 귀속기로 하는 것을 좋아한다. 그것은 다른 곳에서 묘사한 더 큰 구축의 일부분으로 가장 잘한다.
  • 시스템 구축의 핵심 요소는 다음과 같습니다.
  • 기본 노드에 액세스할 수 있습니다.js 함수, 간단한 구성 허용 (매우 복잡한):
  • gulp.task('clean', function () {
      const del = require('del')
      return del(['tmp/'])
    })
    
  • 일반 도구와 장면을 구성하기 위해 webpack 액세스할 수 있습니다 (이 예에서는 lacked comments.
  • const plugins = require('gulp-load-plugins')({ lazy: true })
    gulp.task('analysis-eslint', function () {
      return gulp.src('src/**/*.js')
        .pipe(plugins.eslint())
        .pipe(plugins.eslint.format())
        .pipe(plugins.eslint.failAfterError())
    })
    
    일관성은 내 인지적 부담을 감소시키기 때문에 구축 파일gulpfile.js에서 정의된 목표는 많거나 적거나 같습니다.

  • 정리: 생성 tmp\ 디렉터리를 정리합니다.

  • 컴파일: large library of plugins 컴파일(즉 축소) 원본 코드를 사용합니다.

  • 분석: eslint를 사용하여 프로젝트에 대해 정적 분석을 한 다음에 UglifyJS를 사용하여 통계 데이터를 수집한다.

  • 패키지: 축소된 파일을 tmp\out\bin\ 폴더로 복사하기만 하면 됩니다.

  • 구축: 분석과 번역이 결합된 단축 방식.

  • 재구성: 조합을 정리하고 생성하는 단축키입니다.

  • 발표: 정리, 생성, 포장 조합의 단축키.
  • 자동 테스트는 이러한 설정(외부 API 기반 시각화 통합 플러그인)에서 실현하기 어려우므로 테스트 목표가 없습니다. (당신의 핑계는 무엇입니까?)
    그런 다음 운영 파일package.json 파일에서 시스템을 편리하게 사용하고 검색할 수 있도록 이러한 대상을 참조하여 주요 포털 포인트로 사용합니다.
    {
      "scripts": {
        "analysis": "gulp analysis",
        "clean": "gulp clean",
        "compile": "gulp compile",
        "package": "gulp package",
        "build": "gulp build",
        "rebuild": "gulp rebuild",
        "release": "gulp release"
      }
    }
    

    에스린트 스크립트 파일


    여기에는 새로운 내용이 없다. 왜냐하면 전체 구축은 위에서 설명한 바와 같이 스크립트는 우리가 쉽게 할 수 있도록 하기 위해서이다.
    CALL npm.cmd install --no-package-lock --no-shrinkwrap --loglevel info --cache .tmp\npm-cache
    CALL npm.cmd run-script %TARGET% --loglevel %VERBOSITY%
    
    응, 거의 아무것도 없어.
  • 우선, 우리의 기술은 플랫폼을 뛰어넘는 것이고 우리의 스크립트는 매우 간단하기 때문에 Windows와 MacOS에서 구축하기 쉽다.간단한 build.sh 파일 하나만 추가하면 됩니다 (물론 잊지 마세요 the cloc utility.
  • npm install --no-package-lock --no-shrinkwrap --loglevel info --cache .tmp/npm-cache
    npm run-script $_TARGET --loglevel $_VERBOSITY
    
  • 구축하기 전에 외부 의존 항목을 설치해야 합니다.예를 들어 저는 를 사용하여 제 프로젝트에 대한 통계 데이터를 수집하는 것을 좋아합니다. 이것은 적당한 구축 외에 로컬에 설치하기 쉽습니다. (이것은 간단한 다운로드입니다.)
  • 관례에 따라 로컬 설치는 .tmp\ 디렉터리로 이동합니다 (dot 주의).
  • build\ 폴더 (관례에 따라) 에는 Windows의 다른 구축 스크립트에서 호출되는 SetEnv.bat 스크립트가 있습니다. 이 스크립트는 구축 환경(강력한 Windows 등록표를 사용하여 설치 경로를 검사하고 환경 변수를 초기화하며 부족한 의존 항목을 경고합니다...) 및 (로컬) 설치에 부족한 의존 항목을 초기화할 수 있습니다.
  • IF NOT EXIST "%CD%\.tmp\cloc.exe" (
        IF NOT EXIST .tmp MKDIR .tmp
        powershell.exe -NoLogo -NonInteractive -ExecutionPolicy ByPass -Command "& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest https://github.com/AlDanial/cloc/releases/download/v$Env:_CLOC_VERSION/cloc-$Env:_CLOC_VERSION.exe -OutFile .tmp\cloc.exe; }"
    )
    
  • 파일에서 다른 플랫폼과 동일한 작업을 수행할 수 있습니다 the execute mode permissions.
  • if [! -d .tmp]; then mkdir .tmp; fi
    if [! -f $(pwd)/.tmp/cloc.pl]; then
        wget -nv --show-progress -O .tmp/cloc.pl https://github.com/AlDanial/cloc/releases/download/v$_CLOC_VERSION/cloc-$_CLOC_VERSION.pl
    fi
    
    이러한 방식으로 가능한 한 외부 의존 관계를 많이 처리하면 문서에 대한 수요('선결 조건'부분에서)를 현저히 줄이고 새로운 개발자가 프로젝트에 가입하는 데 걸리는 시간을 줄일 수 있다.나는 이것이 나의 많은 시간을 절약했다는 것을 안다. 내가 이 프로젝트로 돌아온 지 2년 후에...

    cloc 유틸리티 CI 구성 파일


    모든 어려움을 처리한 후에 우리의 프로필은 더 이상 간단할 수 없다. 이것이 우리의 목표이다.예를 들어, 사용the execute mode permissions, .bashrc의 요점은 다음과 같습니다.
    install:
      - . build/.bashrc
      - npm install --no-package-lock --no-shrinkwrap
    
    script:
      - npm run-script release --loglevel notice
    

    더욱 완전한 항목


    좋아, 내가 여기서 너희들에게 보여줄 것이 그리 많지 않을 것 같아.그러나 상술한 항목에서 모든 유용한 개념이 언급되었다.이 파이프를 다른 유형의 프로젝트와 성공적으로 결합할 수 있다는 것만 알면 됩니다.
  • Chrome 확장은 환경에 따라 구성 파일을 JSON 변환해야 합니다(예: OAuth 자격 증명 설정).
  • 정확한 노드.js 프로젝트 (백엔드 및 프론트).임시 폴더 .travis.yml 와 백엔드 원본 파일의 복사본을 실행하여 생산과 관련된 의존 항목만 포장할 수 있도록 하는 것이 주요 방법입니다.나는 그것을 연습으로 너에게 남겨 두지만, 너는 자바스크립트의 모든 기능을 가지고 있기 때문에 (야ML이나 JSON이 아니라) 실현할 수 있을 것이다. (나는 아주 오래 전에 사용했고Travis CI.
  • 좋은 웹페이지 즐겨찾기