【问题标题】:How to set package.json configurations using kotlin-frontend-plugin如何使用 kotlin-frontend-plugin 设置 package.json 配置
【发布时间】:2017-12-21 14:04:09
【问题描述】:

我希望以指向 Kotlin 生成的 JavaScript 文件的方式配置自动生成的 package.json。这是我当前的 gradle 配置:

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
                    }
}

这会输出一个位于 $project.builDir.path/classes/nain 中的 myProject.js 文件,我希望这会反映在生成的 package.json 文件中。但是输出的package.json文件(位于项目的build目录下)是这样的:

{
    "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 中的“main”属性没有指向位于 classes/main/myProject.js 中的包文件。我尝试查看文档以查找如何将 main 属性设置为特定目录和 js 文件,但找不到它。我只能通过在 gradle 文件的 webpackBundle 部分设置 bundleName 属性来更改名称。提前感谢您的帮助!

【问题讨论】:

  • 我尝试在 gradle 文件中设置 compileKotlin2Js 如下: compileKotlin2Js { kotlinOptions.metaInfo = true kotlinOptions.sourceMap = true kotlinOptions.moduleKind = 'commonjs' kotlinOptions.outputFile = "$project.buildDir .path/${project.name}.js" } 但它会导致错误:无效的配置对象。 Webpack 已使用与 API 模式不匹配的配置对象进行初始化。 -configuration.resolve.modules[0] 不能为空

标签: gradle npm webpack kotlin


【解决方案1】:

所以我找到了一种解决方法,可以使用 gradle 发布到 npm。我在代码中添加了以下位:

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']
}

它的作用是将输出的 JavaScript 生成的文件复制到调用 npmPublish gradle 任务时配置 package.json 的位置。

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多