2017-12-21 17 views
0

자동 생성 된 package.json이 Kotlin에서 생성 한 JavaScript 파일을 가리키는 방식으로 구성되기를 원합니다.kotlin-frontend-plugin을 사용하여 package.json 구성을 설정하는 방법

apply plugin: 'kotlin-platform-js' 
apply from: "$project.rootDir/gradle/deploy.gradle" 


dependencies { 
       expectedBy project(":") 

       // Compile/implementation dependencies 
       implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" 
} 

apply plugin: 'org.jetbrains.kotlin.frontend' 

compileKotlin2Js { 
        kotlinOptions.metaInfo = true 
        kotlinOptions.sourceMap = true 
        kotlinOptions.moduleKind = 'commonjs' 
} 

kotlinFrontend { 
        sourceMaps = true 

        npm { 
          dependency("kotlin") 
          replaceVersion("kotlin-js-library", "1.1.0") 
        } 

        define "PRODUCTION", true 

        webpackBundle { 
             bundleName = "${project.name}" 
             sourceMapEnabled = true 
        } 
} 

이 내가 생성 된 package.json 파일에 반영 될 것입니다 희망 무엇 $ project.builDir.path/클래스/나인에 위치한 myProject.js 파일을 모두 출력이 내 현재 Gradle을 구성입니다. 그러나 (프로젝트의 빌드 디렉토리에 위치) 출력 package.json 파일은 다음과 같다 :

{ 
    "name": "myProject", 
    "version": "1.2.0-10-SNAPSHOT", 
    "description": "simple description", 
    "main": "myProject", 
    "dependencies": { 
     "kotlin": "*" 
    }, 
    "devDependencies": { 
     "webpack": "*", 
     "webpack-dev-server": "*", 
     "source-map-loader": "*", 
     "karma": "*", 
     "qunitjs": "1.23.1", 
     "karma-qunit": "*", 
     "karma-sourcemap-loader": "*", 
     "karma-phantomjs-launcher": "*", 
     "phantomjs-prebuilt": "*", 
     "karma-webpack": "*" 
    } 
} 

문제는이되면, package.json에서 "주요"속성에있는 번들 파일을 지정하지 않습니다 classes/main/myProject.js. 주된 속성을 특정 디렉토리와 js 파일로 설정하는 방법을 찾기 위해 문서를 살펴 보았지만 찾지 못했습니다. 나는 gradle 파일의 webpackBundle 부분에 bundleName 속성을 설정해서 만 이름을 바꿀 수있다. 사전에 도움을 주셔서 감사합니다!

+0

나는 Gradle을 파일에 compileKotlin2Js을 설정하는 것을 시도했다 : compileKotlin2Js { kotlinOptions.metaInfo = 사실 kotlinOptions.sourceMap = 사실 kotlinOptions.moduleKind = 'commonjs' kotlinOptions.outputFile = "$ 프로젝트를. buildDir.path/$ {project.name} .js " " 그러나 오류가 발생합니다. 잘못된 구성 개체입니다. Webpack은 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다. -configuration.resolve.modules [0]은 비워 둘 수 없습니다. –

답변

0

그래서 나는 npm에 게시하기 위해 gradle을 사용할 수있는 방법을 찾았습니다. 나는 내 코드에 다음 비트를 추가 :

apply plugin: "com.moowork.node" 

//Must copy the output javascript file 
//to the location that the package.json expects it to be 
//This is semi-workaround since I have not found a way to 
//configure the outputted package.json file 
task copyJSFile(type: Copy){ 

    from "$project.buildDir.path/classes/main/" 
    into "${project.buildDir}" 
    include "*.js" 
} 

//We publish our project to npm 
task npmPublish(dependsOn: copyJSFile, type: NpmTask) { 
    description = "publishes the project to npm" 
    workingDir = file("${project.buildDir}") 
    args = ['publish'] 
} 

무엇이하는 일은 출력 된 자바 스크립트는 npmPublish Gradle을 작업을 호출 할 때 package.json가 구성된 곳으로 파일을 생성 복사합니다. 다음과 같이